Java 从字节流中读取多行

Java 从字节流中读取多行,java,fileinputstream,objectinputstream,Java,Fileinputstream,Objectinputstream,我注意到,无论何时使用append为true的FileOutputStream,追加的对象都会放在不同的行上 我的问题是如何使用ObjectInputStream读取多行数据 例如: public class StringBytes { public static void main(String[] args) throws Exception { String S1 = "Hi"; String S2 = "\n"+"Bye"; St

我注意到,无论何时使用append为true的
FileOutputStream
,追加的对象都会放在不同的行上

我的问题是如何使用
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
位于另一行,所以不读取。
我仍然是一个初学者,因此所有帮助都很感谢
ObjectOutputStream
ObjectInputStream
,所有内容都以二进制格式存储在文件中,因此查看该文件不会提供太多信息

您在文件中输入的内容以及之后从输入流中获得的内容都是单独的对象。要获取这两个
String
s,您需要调用
readObject()
两次,每次调用一次
writeObject()


如果要处理文本文件,可以查看
BufferedReader
BufferedWriter
。如果您想一次读取整个文本文件,请查看。

使用
ObjectOutputStream
ObjectInputStream
,所有内容都以二进制格式存储在文件中,因此查看文件不会给您提供太多信息

您在文件中输入的内容以及之后从输入流中获得的内容都是单独的对象。要获取这两个
String
s,您需要调用
readObject()
两次,每次调用一次
writeObject()

如果要处理文本文件,可以查看
BufferedReader
BufferedWriter
。如果您想同时读取整个文本文件,请查看。

您在文件中写入了两个对象(字符串实例):s1和s2。 您只读取一个对象,第一个对象

如果希望将其视为单个字符串,则s1必须是“嘿”+\n+“再见”。 或者,您可以调用两次
readObject()
,然后获取第二个对象您在文件中写入了两个对象(字符串实例):s1和s2。 您只读取一个对象,第一个对象

如果希望将其视为单个字符串,则s1必须是“嘿”+\n+“再见”。
或者,您可以调用
readObject()
两次,然后获取第二个对象

如果您不知道有多少行,该如何处理?您将如何迭代该文件?您可以使用try-ans-catch-EOFException将其包围,然后迭代直到失败。还有其他方法。这里有一些很好的答案:如果你不知道有多少行,你怎么做?您将如何迭代该文件?您可以使用try-ans-catch-EOFException将其包围,然后迭代直到失败。还有其他方法。以下是一些很好的答案: