如何先在目录中创建文件,然后才与之交互?

问题描述 投票:0回答:0

我有一个用 Java 序列化和反序列化对象的应用程序。但是如果你通过无限循环运行程序,那么应用程序会像在内存中一样保存文件,最后它会把它保存到磁盘

public static JMXMessage serializationAndDeserializationMessage(JMXMessage jmxMessage, String localDate, boolean temporary) {
        File file;
        if (temporary){
            file = new File("messagesShow/" + localDate + ".txt");
        } else {
           file = new File("messagesGet/" + localDate + ".txt");
        }

        FileOutputStream fileOutputStream;
        ObjectOutputStream objectOutputStream;
        FileInputStream fileInputStream;
        ObjectInputStream objectInputStream;
        JMXMessage JMXMessageReturnFileSerializable;

        try {
            fileOutputStream = new FileOutputStream(file);
            objectOutputStream = new ObjectOutputStream(fileOutputStream);
            objectOutputStream.writeObject(jmxMessage);
            objectOutputStream.flush();
            objectOutputStream.close();

            fileInputStream = new FileInputStream(file);
            objectInputStream = new ObjectInputStream(fileInputStream);
            JMXMessageReturnFileSerializable = (JMXMessage) objectInputStream.readObject();
            fileInputStream.close();
        } catch (IOException | ClassNotFoundException e) {
            throw new RuntimeException(e);
        }

        return JMXMessageReturnFileSerializable;
    }

如何才能在我自己未完成的周期内在磁盘上创建文件并在其中进行序列化?我附上循环代码。

Scanner scanner = new Scanner(System.in);
        int a;
        while (true){
            a = scanner.nextInt();
            JMXMessage jmxMessage1 = Build.serializationAndDeserializationMessage(jmxMessage,localDate,true);
            System.out.println(jmxMessage1.toString());
            if (a == 1){
                break;
            }

        }

也就是说,当循环进行时,消息应该放置的文件夹是空的,但是当应用程序结束时,它们已经出现在那里。而且我不明白如何让它在 RunTime 中

java r.java-file
© www.soinside.com 2019 - 2024. All rights reserved.