2013-10-04 27 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