2014-12-09 102 views
0

我不確定如何讓用戶選擇添加/刪除現有文本文件中的名稱。當前的代碼工作正常,並從文本文件中讀取名稱。有人能幫我一下嗎?如何添加/刪除文本文件中的一行?

import java.io.File; 
import java.util.Scanner; 


public class AddOrDeleteNames { 
public static void main(String[] args) throws Exception { 

    String[] names = new String[100]; 
    Scanner scan = new Scanner(new File("names.txt")); 
    int index = 0; 

    while (scan.hasNext()){ 
    names[index]=(scan.nextLine()); 
    index++; 
    } 

    for(int i = 0; i < index; i++){ 
    System.out.println(names[i]); 
    } 

    scan.close(); 
} 


} 
+1

的Eclipse無關與此有關。 – Maroun 2014-12-09 11:42:36

+0

你在正確的軌道上。用java編輯文件是很棘手的。也許最簡單的方法是讀取和存儲整個行(你已經做了什麼),然後使用'Printer'將修改過的數據寫回到同一個文件中。 – 2014-12-09 11:44:08

+0

谷歌如何寫入文件的字符串,然後你有寫作和閱讀。然後你可以很容易地找出其餘的邏輯:) – 2014-12-09 11:44:15

回答

1

這是可能的,幾乎所有的都是,但是你會發現使用數組非常困難。

我會改爲使用ArrayList,它與普通的ol數組相似,但是要好得多。

一個StringArrayList的定義,像這樣:

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

您可以添加使用ArrayListadd功能:

while (scan.hasNext()) 
    names.add(scan.nextLine()); 

然後,從文本文件中刪除的名稱,只是刪除它從names ArrayList中使用remove函數,並將修改後的ArrayList寫入文件中:

names.remove("Some Name Here"); 
PrintWriter writer = new PrintWriter("names.txt", "UTF-8"); 
for (int i = 0; i < names.size(); i++) 
    writer.println(names.get(i)); 
writer.close(); 

同樣,一個新的名字添加到文件,只需添加新名稱ArrayList你把它寫入文件之前,使用add功能

+0

但是這需要讀取整個文件只是爲了刪除一個名字。 OP想要什麼?如果沒有,那麼'RandomAccessFile'可能是更好的(也許只有?)的方式。 – 2014-12-09 11:55:07

+0

這很好,謝謝。但是我需要一個循環,以便計算機詢問用戶在完成之前是否要添加或刪除名稱。謝謝 – 2014-12-09 12:09:55

相關問題