2012-11-05 45 views
2

我正在嘗試閱讀文本文件每行中列出的問題,然後將每行添加到數組中,以便稍後可以單獨調用它們。我幾乎肯定可以在Java中做,但我不確定如何去做。Java:如何讀取文本文件的每一行並將每行設置爲數組元素?

我沒弄清楚如何讀取整個文本文件,並將其全部設置爲一個字符串:

private static String readFile(String pathname) { 
    String line = null; 
    try { 
     BufferedReader reader = new BufferedReader(new FileReader(pathname)); 
     while((line = reader.readLine()) != null){ 
      System.out.println(line); 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return line; 
} 

雖然它沒有很多與此,正如我所說,這是保存問題文件。如果我得到了這個問題的解決方案,我將爲另一個文件提供所有問題的答案,然後我將爲該文件做同樣的事情。

有沒有人知道一個不太複雜的方法來做到這一點?如果它必須複雜,那就告訴我。我想要某種類型的示例,而不僅僅是指向不同網站的鏈接。我不是說我只會採取那個。

謝謝你的時間!

P.S.我已閱讀關於此主題的其他問題,但無法找到適合我在Java中嘗試做的答案和/或示例。

+0

有沒有你要鏈接任何情況問題和答案 – Suranga

+1

'我弄清楚如何讀取整個文本文件並將其全部設置爲字符串:'* * NO **,當你返回它時,你的String將是'null'。 – jlordo

回答

5

我會用一個ArrayList ......像這樣......

ArrayList<String> questions = new ArrayList<String>(); 


/// in your loop... 
while((line = reader.readLine()) != null){ 
    questions.add(line); 
} 

順便說一句,作爲jlordo在評論中指出,順便你構建你的方法,走出的唯一出路你的循環是行爲null,所以,當你到達你的return語句時,你將返回null。你究竟想回到這裏?如果它是整行文件,則需要將它們添加到字符串中。

1
private static String readFile(String pathname) { 
    List<String> lines = new ArrayList<String>(); 
    String line = null; 
    try { 
     BufferedReader reader = new BufferedReader(new FileReader(pathname)); 
     while((line = reader.readLine()) != null){ 
      lines.add(line) ; 
      System.out.println(line); 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

像我一樣使用ArrayList<String>它動態增長。 把它聲明爲一個字段,我在這個例子中只使用了一個局部變量。 你可以通過它進行迭代後,像這樣:

for(String line : lines) 
    { 
     System.out.println(line) ; 
    } 
2

代替陣列的使用ArrayList,它是動態的,找到具體的代碼。

private static List<String> readFile(String pathname) { 
    String line = null; 
    List<String> list = new ArrayList<String>(); 
    try { 
     BufferedReader reader = new BufferedReader(new FileReader(pathname)); 
     while((line = reader.readLine()) != null){ 
      list.add(line); 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return list; 
} 

而對於第二個文件,你應該保持map<question,answer>意味着Map<String,String>

1

難道你不能只是一個字符串arraylist和添加每行閱讀使用readLine()到它?然後你可以將數組列表轉換爲普通數組。

listArray.toArray(strArray); 
1

使用番石榴Files

一行代碼:

System.out.println(Files.readLines(new File("C:\\sample.txt"), Charsets.UTF_8)); 
0

這是Java 8確實簡單明瞭:

List<String> fileLines = Files.lines(Paths.get("/file/path/")).collect(Collectors.toList()); 
相關問題