2013-11-18 2 views
1

Я заметил, что всякий раз, когда вы используете FileOutputStream с добавлением как true, добавленный объект помещается в другую строку.Чтение нескольких строк из байтового потока

Мой вопрос: как вы читаете несколько строк данных с помощью ObjectInputStream.

Для экс:

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 находится на другой линии, он не читает. Я до сих пор beginer так все оцененная помощь

ответ

0

С ObjectOutputStream и ObjectInputStream, все хранится в файле в двоичном формате, поэтому, глядя на файл не даст вам, что много информации.

То, что вы помещаете в файл, и что вы получаете из входного потока впоследствии, являются отдельными объектами. Чтобы получить как String с, вам нужно будет позвонить readObject() дважды, один раз за каждый writeObject(), который у вас был изначально.

Если вы хотите работать с текстовыми файлами, вы можете посмотреть BufferedReader и BufferedWriter. Если вам интересно сразу прочитать весь текстовый файл, взгляните на What is simplest way to read a file into String?.

1

Вы написали в файл два объекта (экземпляры String): s1 и s2. Вы читаете только один объект, первый.

Если вы хотите, чтобы с ним обращались как с одной строкой, вам нужно s1 быть «Эй» + \ n + «Пока». В качестве альтернативы вы можете позвонить readObject() дважды, и получить второй объект

+0

Как вы это сделаете, если не знаете, сколько строк есть? Как вы будете проходить через файл? –

+0

вы можете окружить его с помощью try as catch EOFException и итерации до тех пор, пока он не сработает. Есть и другие способы. Вот несколько хороших ответов: http://stackoverflow.com/questions/2626163/java-fileinputstream-objectinputstream-reaches-end-of-file-eof –

Смежные вопросы