我尝试使用DataInputStream
和FileInputStream
从文本文件中读取。
我知道我应该使用FileReader,但我想用Byte流来尝试。
这是代码
import java.io.*;
public class FTest_3 {
public static void main(String[] args) throws IOException{
DataInputStream stream = new DataInputStream(new FileInputStream("lol1.txt"));
String str = stream.readUTF();
System.out.println(str);
stream.close();
}
}
如果我尝试阅读文件 lol1.txt ,则会出现EOF Exception
和readUTf(unknownsource)
错误。
但是如果我使用DataOutputStream
创建一个文件 lol1.txt ,然后使用上面的代码阅读它,它就可以正常工作。
这是我的写文件代码
import java.io.*;
public class FTest_4 {
public static void main(String[] args) throws IOException{
DataOutputStream stream = new DataOutputStream(new FileOutputStream("lol1.txt"));
stream.writeUTF("hahah");
stream.close();
}
}
此外,我找不到任何可以回答我的查询的相关帖子。 谢谢!
答案 0 :(得分:2)
readUTF
是not a general-purpose method to read Strings from text files。
它首先读取两个字节,它们应该包含后面的数据字节数(字节,而不是字符)。之后是修改后的UTF-8编码中字符串的字节。
在你的情况下,你可能正在阅读两个ASCII字符" ha" (0x68 0x61)在文件的开头,当解释为整数时,这是一个相当大的数字,然后得到一个EOF,因为文件中没有足够的字节来匹配它。
要读取原始字节,请使用InputStream#read
方法之一。
要阅读文本文件,请使用Reader
,而不是InputStream
。然后你也可以阅读字符串。
答案 1 :(得分:0)
尝试使用stream.read();使用DataInputStream从文本文件中读取或使用特定值尝试使用stream.readDouble(),stream.readInt()等,并尝试使用stream.write()使用DataOutputStream写入文本文件。