-1

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

4

1 回答 1

1

这是一个简单的示例,将 a 写入ListaFile然后读取File以重新生成List. 然后检查两者是否相同。

代码使用File.createTempFileandFile.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();
    }
}
于 2013-04-06T11:27:18.093 回答