2013-04-06 213 views
-1

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

+0

请显示您的代码 - 特别是您用于导出的代码和文件内容 - 或一个小例子文件。 – 2013-04-06 11:16:29

+0

搜索java文件作家,你会发现很多的例子。遍历列表,将列表中的每个条目写入文件,然后关闭它。 – Patashu 2013-04-06 11:19:18

回答

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(); 
    } 
} 
+0

您也可以使用Files.readAllLines()和Files.write()来代替在“BufferedWriter”上迭代和'BufferedReader'。 – assafmo 2013-04-06 12:07:06