从字节流中读取多行

问题描述 投票:1回答:2

我注意到,无论何时使用FileOutputStream并将其追加为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在不同的行上,它不被读取。我仍然是一个初学者,所以所有的帮助表示赞赏

java fileinputstream objectinputstream
2个回答
1
投票

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

如果您希望将它视为单个String,则需要s1为“Hey”+ \ n +“Bye”。或者,您可以两次调用readObject(),并获取第二个对象


0
投票

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

您放入文件的内容以及之后输入流的内容是单个对象。要获得两个Strings你需要两次调用readObject(),一次为你最初的每个writeObject()

如果你想使用文本文件,你可以看看BufferedReaderBufferedWriter。如果您有兴趣一次阅读整个文本文件,请查看What is simplest way to read a file into String?

© www.soinside.com 2019 - 2024. All rights reserved.