我使用 java 创建了文本文件编码器,并将文本中的单词添加到列表中。现在对于解码程序,我需要在编码程序中使用的列表,我已经使用了参考变量字。我无法理解如何在解码程序中使用该列表。如何导入
问问题
1131 次
1 回答
1
这是一个简单的示例,将 a 写入List
aFile
然后读取File
以重新生成List
. 然后检查两者是否相同。
代码使用File.createTempFile
andFile.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 回答