2013-04-06 164 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