2011-01-27 67 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