2011-01-27 84 views
0

好的,有一天我遇到了FileWriter没有注明换行符的问题,但我得到了一些帮助并解决了它。现在,就像以前一样,我将我的一些旧代码(在旧的prgram中完美地工作)读取所写的文件。我用“|”作为分隔符(pieces.useDelimiter(“|”);)。当我调用pieces.next()时,它只会触发下一个字符,而不是下一个字符串直到分隔符。我错过了什么? 代码片段:Android Scanner分隔符问题

try{ 
    mFile = new Scanner(newFile(loadPath)); 
    while(mFile.hasNextLine()){ 
     String input = mFile.nextLine(); 
     Scanner pieces = new Scanner(input); 
     pieces.useDelimiter("|"); 
     while(pieces.hasNext()){ 
      int row = Integer.valueOf(pieces.next()); 
      int col = Integer.valueOf(pieces.next()); 
      String pullPath = pieces.next(); 
      ...... 

}}

+0

请张贴一些上下文的代码。 – 2011-01-27 18:12:28

回答

0

你传递给useDelimiter被解释为正则表达式的字符串。 |是正则表达式中的特殊字符,因此您必须使用反斜杠进行转义。为了避开Java编译器,反斜杠本身需要被转义。因此,改变该行如下应该做的伎俩:

pieces.useDelimiter("\\|"); 

另外请注意,由pieces.next()返回的字符串包含的分隔符。我怀疑这些行:

 int row = Integer.valueOf(pieces.next()); 
     int col = Integer.valueOf(pieces.next()); 

可以被替代:

 int row = pieces.nextInt(); 
     int col = pieces.nextInt(); 

您可能还需要调整pullPath修剪分隔符(一个或多个)。

我希望这会有所帮助。

+0

像魅力一样工作,非常感谢!你有任何链接到转义的信息?我从来没有遇到过这种情况... – weh 2011-01-27 18:46:19