我注意到,无论何时使用FileOutputStream
并将append视为true,附加的对象都会放在不同的行上。
我的问题是如何使用ObjectInputStream
读取多行数据。
例如:
public class StringBytes {
public static void main(String[] args) throws Exception {
String S1 = "Hi";
String S2 = "\n"+"Bye";
String file = "C:\\HiBye.out";
FileOutputStream fileOutputStream = new FileOutputStream(file);
ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
objectOutputStream.writeObject(S1);
fileOutputStream = new FileOutputStream(file,true);
objectOutputStream = new ObjectOutputStream(fileOutputStream);
objectOutputStream.writeObject(S2);
FileInputStream fileInputStream = new FileInputStream(file);
ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
String SS = (String) objectInputStream.readObject();
System.out.println(SS);
}
}
上面的输出为Hi
,因为Bye
位于不读取的另一行上。
我仍然是一个初学者所以所有的帮助赞赏
答案 0 :(得分:1)
您在文件中写入了两个对象(String实例):s1和s2。 你只读了一个对象,第一个。
如果您希望将其视为单个字符串,则需要s1为“Hey”+ \ n +“Bye”。
或者,您可以调用readObject()
两次,然后获取第二个对象
答案 1 :(得分:0)
使用ObjectOutputStream
和ObjectInputStream
,所有内容都以二进制格式存储在文件中,因此查看该文件不会给您太多信息。
您放入文件的内容以及之后从输入流中获得的内容是单个对象。要同时获得String
个readObject()
,您需要拨打writeObject()
两次,最初为BufferedReader
次。{/ p>
如果您想使用文本文件,可以查看BufferedWriter
和{{1}}。如果您有兴趣一次阅读整个文本文件,请查看What is simplest way to read a file into String?。