【发布时间】:2016-12-25 00:25:12
【问题描述】:
我的代码发生了一些奇怪的事情。我正在尝试打开一个文件并将生成的字符串(基于时间)附加到它,以便以后可以使用它。在我的应用程序中,这种情况不止一次发生,但不知何故,这一次它并没有给我想要看到的结果。澄清一下:
我在课堂上使用以下代码:
try {
OutputStreamWriter oos = new OutputStreamWriter(context.openFileOutput(ARRANGED_TXT, Context.MODE_PRIVATE));
oos.write(ArrangedTxtAsString);
oos.close();
}
catch(FileNotFoundException e){
Log.e("File Error", "File not found: " + e.toString());
}
而ARRANGED_TXT 被定义为:
private static final String ARRANGED_TXT = "arranged_txt.txt";
ArrangedTxtAsString 是一个字符串,如下所示:
Banana
Pineapple
Orange
Coconut
Strawberry
它是使用 StringBuilder 制作的。
现在的问题是,生成的文件是这样的:
NotePad++ 没有问题,因为其他程序给出了相同的结果。需要提到的一件重要的事情是,尽管文本看起来像是由非 UTF-8 字符组成的,但它可以由程序的其余部分完美处理。这听起来可能有点奇怪,但我想说的是,代码工作正常,但唯一的问题是,通过文本编辑器显示的文本与它应该显示的文本不符看起来像。你看,我是一个完美主义者,这就是为什么我希望它得到修复。这也可能是未来的问题(调试目的等)。
编辑:
似乎字符串包含什么并不重要:单个字符、数字或其他任何内容;它给出了完全相同的结果。即使是写"" 也会导致那些奇怪的字符!
我真的希望有人知道这里发生了什么! 提前谢谢你。
【问题讨论】:
-
你的意思是
oos.write(ArrangedTxtAsString.toString());? -
ArrangedTxtAsString应该已经是一个字符串,因为它被定义为ArrangedTxtAsString = stringBuilder.toString();,其中stringBuilder只是StringBuilder的一个实例。知道这一点,这也行不通也就不足为奇了。无论如何,我真的很感谢你的帮助! ;) -
OutputStreamWriter不太适合输出文本,您应该改用BufferedWriter
标签: java android utf-8 fileoutputstream