好的,我对 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 中的各种示例,但没有成功。
关于第一次尝试可能出现什么问题的任何想法?