0

好的,我对 Android 上的文件处理感到非常沮丧。我是新手(只有几天)所以我可能只是错过了一些明显的东西。我已经成功编写了一个多行的短文件,每行都包含 CSV 数据。那不是问题。阅读是。我从这个开始(为了清楚起见,省略了异常处理和解析):

        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
        }

阅读该行时,我立即得到一个空值。所以我备份了线路并尝试使用 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 中的各种示例,但没有成功。

关于第一次尝试可能出现什么问题的任何想法?

4

1 回答 1

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

为我工作,它没有返回 null

于 2013-12-30T01:15:41.660 回答