从字节流中读取多行

时间:2013-11-18 10:24:06

标签: java fileinputstream objectinputstream

我注意到,无论何时使用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位于不读取的另一行上。 我仍然是一个初学者所以所有的帮助赞赏

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

您放入文件的内容以及之后从输入流中获得的内容是单个对象。要同时获得StringreadObject(),您需要拨打writeObject()两次,最初为BufferedReader次。{/ p>

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