2013-08-07 1 views
1

Я просматривал документацию для FileOutputStream и ObjectOutputStream, и я не видел никаких способов перемещения «указателя записи» на указанное место (хотя я видел конструктор для полностью переписываний ВСЕХ данных в файле, и я видел конструктор просто прилагая writtenData до конца файла. есть ли OutputStreams, что я мог бы использовать, что позволяет мне писать где-нибудь?OutputStreams в Java

Кроме того, я возникли проблемы с ObjectInputStream. Я написал некоторый тестовый код для проверки обновления объекта (то, что я действительно планирую сделать, это написать массив из двух файлов JTable s и обновить когда я получаю два JTable с клиента). Я попытался записать String в текстовый файл (я не думаю, что расширение файла имеет значение для Java, но я мог ошибаться), и по некоторым причинам кажется, что используемое мной ObjectInputStream стирает все содержимое файл! Кто-нибудь знает, что может быть причиной этого? (Это, кажется, происходит даже тогда, когда единственное, что моя программа делает это чтение строк через ObjectInputStream.)

+2

Взгляните на ['RandomAccessFile'] (http://docs.oracle.com/javase/7/docs/api/java/io/RandomAccessFile.html). –

+0

Я боюсь, что, так как это происходит, если я попытаюсь использовать ObjectInputStream для чтения объектов «по-настоящему», это может сломать сериализацию объектов! –

ответ

4

Я просматривал документацию для FileOutputStream и ObjectOutputStream, и я не видел каких-либо методов для перемещения «указатель записи» в указанное место

Взгляните на RandomAccessFile.

, что я действительно планирую делать пишет массив из двух JTable: в файл

JTable имеет несколько полей, которые заявлены в качестве transient, где transient объекты не могут быть сериализации (их ссылки будут null после десериализации).

+0

Да, все материалы для редактирования и рендеринги, которые мне не понадобятся! –

+0

Ячейки в отправляемых JTables не редактируются, и они строго используются для сбора данных (из математической игры). –

0

Ответ на этот вопрос ответил на мой первый вопрос, но что касается самого сброса файла, это произошло потому, что я попытался инициализировать ВСЕ в конструкторе (включая OutputStream). Инициализация FileOutputStream привела к тому, что все данные были удалены в файл.