2013-10-04 28 views
0

好的,我正式對Android上的文件處理感到沮喪。我是新來的(只有幾天),所以我可能會錯過一些明顯的東西。我已成功地在每行上寫入了一個包含多個CSV數據的短文件。這不是問題;閱讀是。我開始與這(留下了異常處理和分析的清晰度):Android上的各種讀取線方法失敗

 FileInputStream in = context.openFileInput("foo.txt"); 
     InputStreamReader isr = new InputStreamReader(in); 
     BufferedReader buffreader = new BufferedReader(isr); 
     String inline; 
     while((inline = buffreader.readLine())!=null) 
     { 
      // parse CSV here 
     } 

我讀線的時候有一個即時爲null。所以我重新開始工作,嘗試使用SO中的各種示例作爲模式讀取原始字節。我不會重現所有的失敗,但這樣的事情並沒有工作,要麼:

 FileInputStream in = context.openFileInput("foo.txt"); 
     InputStreamReader isr = new InputStreamReader(in); 
     BufferedReader buffreader = new BufferedReader(isr); 
     CharBuffer buff = CharBuffer.allocate(1024); 
     isr.read(buff); 
     String s = buff.toString(); 

調試表明,字符緩衝區和字符串消耗了人物,但他們是空白。那麼,如果有必要,我可以真正走向老派(我在十歲之前就用C編程)。以下工作:

 FileInputStream in = context.openFileInput("foo.txt"); 
     InputStreamReader isr = new InputStreamReader(in); 
     int c; 
     String foo = ""; 
     while((c = isr.read())>=0) 
      foo += (char)c; 

「FOO」設法把整個內容,我可以分裂和過程,但我不喜歡,它是如此粗糙。是的,它有效,但我想知道爲什麼其他人沒有。我試圖嚴格遵守SO中的各種例子,但沒有成功。

有關首次嘗試可能出錯的任何想法?

+0

請提供foo.txt的文件 –

+0

你爲我提供的代碼(第一位的,沒有看其他的人)是正確的。也許問題只是你不打開文件?文件位於何處?在資產文件夾中? – HpTerm

+0

Yeah..openFileInput用於內部存儲(應用程序包).so我相信你的文件不存在。 –

回答

0
  do { 
       inline=bruffreader.readLine(); 
       if(inline != null) { 
       //parse here 
       } 
      } while (inline != null); 

工作對我來說,它沒有返回null