在Java中将单个特定方法打印到文件

在Java中将单个特定方法打印到文件,java,Java,我正在为一个学校项目做一个基本的加密程序,我想有一个容易交换的密钥。目前,我有一个加密类和一个解密类,有多个方法。其中一个方法是我想要打印到文件中的密钥。因为我将对这两个类进行许多更改(除了键),所以我希望能够将这一个方法打印到一个文件中。我还需要能够再次加载它。有什么简单的方法可以做到这一点吗?您可以使用java序列化,因为您评论说您有一个字符串数组要保存,您可以这样做: // save object to file ObjectOutputStream oos = new ObjectOut

我正在为一个学校项目做一个基本的加密程序,我想有一个容易交换的密钥。目前,我有一个加密类和一个解密类,有多个方法。其中一个方法是我想要打印到文件中的密钥。因为我将对这两个类进行许多更改(除了键),所以我希望能够将这一个方法打印到一个文件中。我还需要能够再次加载它。有什么简单的方法可以做到这一点吗?

您可以使用java序列化,因为您评论说您有一个字符串数组要保存,您可以这样做:

// save object to file
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File("/tmp/file")));
oos.writeObject(myArray); // where myArray is String[]

// load object from file
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(new File("/tmp/file")));
String[] read = (String[]) ois.readObject();
一个有效的例子;),保存应用程序执行时收到的参数

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.Arrays;

public class TestSerialization {

    public static void main(final String[] array) throws FileNotFoundException, IOException, ClassNotFoundException {
        // save object to file
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File("/tmp/file")));
        oos.writeObject(array); // where myArray is String[]

        // load object from file
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream(new File("/tmp/file")));
        String[] read = (String[]) ois.readObject();

        System.out.println(Arrays.toString(read));
    }

}

我发现,用户Speath指出的序列化是一种非常好的方法

如果您想在写入文件的内容上更具选择性,可以使用简单的文件I/O写入文件,如下所示:

使用FileWriter类在文件系统上创建新文件,然后使用BufferedWriter启动I/O流以写入此文件:

// create a new file with specified file name
FileWriter fw = new FileWriter("myFile.log");

// create the IO strem on that file
BufferedWriter bw = new BufferedWriter(fw);

// write a string into the IO stream
bw.out("my log entry");

// don't forget to close the stream!
bw.close();
为了捕获IO异常,必须用try/catch来包围整个过程


希望这有帮助。

打印方法是什么意思?是要将输出打印到文件中,还是打印方法本身的代码?如果你是指后者,只需复制并粘贴到你选择的文本编辑器中即可。我不能100%确定你想要的是什么-你想将该方法的源代码打印到文件中,还是用给定参数调用该方法的结果?您是在尝试用Java编程写入文件,还是只是在寻找实现这一点的功能性方法?老实说,我也不能百分之百确定我想要的是什么。我所知道的是,我有一个字符串数组,我需要导出到一个文本文件,它必须能够在程序运行时加载。我现在知道的最接近的事情是使用FileOutputStream和FileInputStream,当你不知道你在追求什么时,我们应该如何知道?;)好的,应该行了。这是我最初计划的路线,但由于我不太了解面向对象的编程,我不知道是否需要将整个类对象写入文件。-1:他为什么要以专有的、非人类可读的格式序列化整个字符串[],如果他能将它保存到一个纯文本文件中,在那里他可以在其他工具中编辑和使用该文件,我不会介意我是否能在其他程序中处理它。鉴于该计划的性质,这实际上是一件坏事。如果用户弄乱了密钥,那么程序将无法正常工作。@CodeAdmiral如果文件是纯文本,您可以对其进行错误检查,还可以恢复一些简单的错误。如果是这样,用户也可能损坏文件,但即使在简单的情况下,您也几乎没有机会恢复文件error@Spaeth你说得对,他没有指出这是一项要求。这是真的,我必须承认,我的第一个想法也是把它连载起来。但是作为一个程序员,我想你知道需求是变化的,如果他把它保存为明文,他会灵活得多。就安全性而言,序列化对象根本不是一个加号,我看不出这样做有什么好处,但很多人用明文来做。我可能会有不同的看法,因为这是一个学术问题(家庭作业)。我明白你的意思,不要生气,但确实如此。我可能会将其用于其他需要写入相关文件的事情,而字符串[]将由用户Spaeth的方法处理。谢谢+1,因为这是要走的路。不要序列化整个字符串[],而是对其进行迭代并将其保存到纯文本文件中。没有理由将整个字符串[]序列化到磁盘。。。。那是个坏消息approach@DanielLeschkowski我正在寻找一种方法来导入和导出一个键,当我想更改该键时,我所要做的就是滚动字符串[]并更改值,然后能够导出它,而不必触碰任何其他代码。@CodeAdmiral,您不必触碰正在执行的代码,喜欢你接受的建议。正如你所想,这样做并不复杂。如果合适的话,也可以这样做,但您没有纯文本解决方案那么灵活,如果您只是序列化,则不会得到任何好处。