从列表写入文本文件

时间:2013-04-06 11:06:51

标签: java io

我使用java创建了一个文本文件编码器,我已将文本中的单词添加到列表中 。 现在对于解码程序我需要在编码程序中使用的列表我已经使用了引用变量字。我无法理解如何在解码程序中使用该列表。如何导入

1 个答案:

答案 0 :(得分:1)

以下是将List写入File然后阅读File以重新生成List的简单示例。然后检查两者是否相同。

代码使用File.createTempFileFile.deleteOnExit来阻止在使用此示例时随处创建随机文件。显然,这需要替换为商店文件的真实位置:

public static void main(String[] args) throws IOException {
    final List<String> myList = new LinkedList<>();
    myList.add("Some");
    myList.add("Random");
    myList.add("Content");
    myList.add("Some");
    final File file = File.createTempFile("testProgram", ".list");
    file.deleteOnExit();
    writeToFile(myList, file);
    final List<String> myList2 = readFromFile(file);
    System.out.println(myList);
    System.out.println(myList2);
    if (myList.equals(myList2)) {
        System.out.println("List read is the same as the list written");
    } else {
        System.out.println("Something has gone wrong...");
    }
}

public static void writeToFile(final List<String> list, final File file) throws IOException {
    try (final BufferedWriter bw = new BufferedWriter(new FileWriter(file))) {
        for (final String line : list) {
            bw.append(line);
            bw.newLine();
        }
    }
}

public static List<String> readFromFile(final File file) throws IOException {
    final List<String> content = new LinkedList<>();
    try (final BufferedReader br = new BufferedReader(new FileReader(file))) {
        String line;
        while ((line = br.readLine()) != null) {
            content.add(line);
        }
    }
    return content;
}

或者,您可以使用Java序列化API将List作为二进制内容写入文件并将其读回。这会更快,但文件将包含乱码(非人类可读内容)。

public static void writeToFile(final List<String> list, final File file) throws IOException {
    try (final ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(file))) {
        oos.writeObject(list);
    }
}

public static List<String> readFromFile(final File file) throws IOException, ClassNotFoundException {
    try (final ObjectInputStream ois = new ObjectInputStream(new FileInputStream(file))) {
        return (List<String>) ois.readObject();
    }
}