Java - Объяснение объектного файла - PullRequest
0 голосов
/ 07 февраля 2020

Мне нужно создать ArrayList, который будет записан в локальный объектный файл. Но это первый раз, когда я использую Файл в java. Итак ... может кто-нибудь вкратце объяснить мне, как это сделать?

Мне просто нужно вставить этот ArrayList в файл (я думаю, что пишу), прочитать файл и использовать ранее сохраненный в этом же файле массив.

Я пытался реализовать это, и вот результат:

    FileInputStream fileIn = new FileInputStream("contiCorrenti");
    ObjectInputStream fileObjIn = new ObjectInputStream(fileIn);

    ArrayList<contoCorrente> contiCorrentiArray = (ArrayList<contoCorrente>) fileObjIn.readObject();

    fileObjIn.close();
    fileIn.close();

    contoCorrente c1 = new contoCorrente("IDNALFO", 14, 1);
    contoCorrente c2 = new contoCorrente("IDNALFO", 14, 3);

    contiCorrentiArray.add(c1);



    FileOutputStream fileOut = new FileOutputStream("contiCorrenti");
    ObjectOutputStream fileObj = new ObjectOutputStream(fileOut);

    fileObj.writeObject(contiCorrentiArray);
    fileObj.close();
    fileOut.close();

Вероятно, все будет неправильно, поэтому я прошу вас понять.

Ответы [ 2 ]

0 голосов
/ 07 февраля 2020

Возможно, у вас ошибка чтения файла. Ниже должно работать. Я создал фиктивный класс "contiCorrenti" для тестирования. Обратите внимание, что это очень базовая (и дорогостоящая) сериализация. Вы, вероятно, должны искать лучшие версии, такие как крио или быстрее xml.

package io;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.ArrayList;

public class ObjectWrite {

    static class contoCorrente implements Serializable {

        public contoCorrente(String string, int k, int l) {
            name = string;
            i = k;
            j = l;
        }

        String name;
        int i;
        int j;
    }

    public static void main(String[] args) throws Exception {
        ArrayList<contoCorrente> contiCorrentiArray = null;
        File file = new File("contiCorrenti");
        if (file.exists()) {
            FileInputStream fileIn = new FileInputStream(file);
            ObjectInputStream fileObjIn = new ObjectInputStream(fileIn);

            contiCorrentiArray = (ArrayList<contoCorrente>) fileObjIn.readObject();

            fileObjIn.close();
            fileIn.close();
        } else {
            contiCorrentiArray = new ArrayList<contoCorrente>();
        }

        System.out.println("Size of List at start: "+contiCorrentiArray.size());

        contoCorrente c1 = new contoCorrente("IDNALFO", 14, 1);
        contoCorrente c2 = new contoCorrente("IDNALFO", 14, 3);

        contiCorrentiArray.add(c1);

        FileOutputStream fileOut = new FileOutputStream(file);
        ObjectOutputStream fileObj = new ObjectOutputStream(fileOut);

        fileObj.writeObject(contiCorrentiArray);
        fileObj.close();
        fileOut.close();
    }

}
0 голосов
/ 07 февраля 2020

Вы пытаетесь правильно вывести свой ArrayList в файл? Если это так, вот как я это делаю:

        OutputStream os = new FileOutputStream(new File(**file path here**));
        os.write(Arrays.toString(contoCorrente.toArray()).getBytes(), 0, Arrays.toString(contoCorrente.toArray()).length());

Дайте мне знать, если это работает для вас! :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...