class Data { String name; int age; // и т.д. ..... }
как это записать в файл (и после прочитать) ?
(в смысле что структура файла будет иметь тип Data).
23 ноя 2006 11:29 | |
Сообщения:209 | Например имеется сlass : class Data { String name; int age; // и т.д. ..... } как это записать в файл (и после прочитать) ? (в смысле что структура файла будет иметь тип Data). |
23 ноя 2006 11:48 | |
Сообщения:3874 | Как вариант, можно использовать DataOutputStream. Нужно написать два метода - который умеют сохранять/читать струткуру в/из потока, и в цикле запускать чтение или запись: Читаем и записываем в одинаковом порядке public void writeData(DataOutputStrea stream, Data data) throws IOException { stream.writeString(data.name); stream.writeInt(data.age); } public Data readData(DataInputStream stream) throws IOException { Data data = new Data(); data.name = stream.readString(); data.age = stream.readInt(); return data; } DataOutputStream и DataInputStream создаются на основе FileOutputStream и FileInputStream cooтветственно. |
24 ноя 2006 20:19 | |
Сообщения:209 | Лучше даже не DataOutputStream и DataInputStream , а сразу ObjectOutputStream и ObjectInputStream.. |
25 ноя 2006 19:34 | |
Сообщения:209 | Ну вот так например , как вариант .. class WriterReader { FileOutputStream fout; ObjectOutputStream oout; public void writeObject(Data[] data) throws FileNotFoundException, IOException { fout = new FileOutputStream("c:\\file.dat"); oout = new ObjectOutputStream(fout); for(int i = 0; i < data.length; i++) oout.writeObject(data[i]); oout.close(); } //.... } А есть ли разница какой поток закрывать oout или fout ? |
24 дек 2006 16:33 | |
Сообщения:3874 | Andrew: А есть ли разница какой поток закрывать oout или fout ? Нет, все стандартные Java потоки закрываются каскадно (т.е. если закрыть child поток - child закроет parent поток). |
25 дек 2006 07:11 | |
Сообщения:994 | а я делаю через BufferedReader in = new BufferedReader(new FileReader(path)); и соотв Quote: BufferedWriter out = new BufferedWriter(new FileWriter(path1)); есть разница по быстродействию с примерами которые привели вы? Скачать фото и видео из Инстаграм https://igrab.online/ |
25 дек 2006 08:27 | |
Сообщения:209 | Да буферизированный ввод/вывод улучшает эффективность. НО тут cобственно обсуждалась запись объектов в файл ObjectOutputStream/.. и альтернатива в виде DataOutputStream/...а эти патоки буферизировать не получится. Ну а FileWriter/... уж совсем не подходит для записи структуры типа Data , ещё String name; int age; кое как запишите , но а что будете делать с double, c массивами, с др. структурами ??? Помойму ObjectOutputStream/... лучше не найти для данной задачи (название потока говорит само за себя). |
25 дек 2006 08:41 | |
Сообщения:994 | прошу прощения, не внимателььно прочел, думал речь идет о Стринге Скачать фото и видео из Инстаграм https://igrab.online/ |
27 дек 2006 16:57 | |
Сообщения:15 | Кстати о string, подскажите как прочитать файл. Пробую так FileInputStream fis = new FileInputStream("путь_к_файлу");но выводит набор чисел (по-ходу не та кодировка?), добавляю InputStreamReader isr = new InputStreamReader(fis, "KOI8_R");но эффекта не много, тока числа меняются. |
28 дек 2006 07:07 | |
Сообщения:994 | я об этом только что писал BufferedWriter out = new BufferedWriter(new FileWriter(path)); path - путь до файла. создается автоматом, в противном случае заменяется. и посмотри методы BufferedWriter там есть write() и newLine() out.write(txt); out.newLine(); вроде достаточно что бы записать Скачать фото и видео из Инстаграм https://igrab.online/ |
28 дек 2006 13:22 | |
Сообщения:209 | Cуществуют различные классы для чтения/записи из/в файл(а). В файле записано скажем : Hello world ! ....... FileInputStream fin = new FileInputStream("..."); while(fin.available() > 0) { System.out.print((char)fin.read()); } fin.close(); ....... } |
28 дек 2006 14:57 | |
Сообщения:15 | Достаточно было сказать что в любом случае понадобится преобразование типа : (char) А на счёт книжки так я как раз и читаю, вот и появился вопрос почему не работает вообщем-то их листинг http://pages.plotinka.ru/~files21/books/programmistdocs/19/Glava18/Index2.htm Но теперь вообщем-то понятно просто забыли написать (char). |