2013-11-27 68 views
1

我試圖編寫一個方法,用一個新的字符串更新一個.txt文件.....什麼是做的是讓它1)從以前製作的txt文件中讀取所有字符串 2)將其放入一個ArrayList 3)寫新的字符串到ArrayList 4)然後寫入了toString()的數組列表的對象到新文件用字符串更新.txt文件

它僅寫入最新字符串文件,並沒有任何其他人即使我編輯多行文件

這裏是我有:

public static void updateNames(String newName) throws FileNotFoundException { 
     name = new File("names.txt"); 
     infile = new Scanner(name); 
     ArrayList<String> nameslist = new ArrayList<>(); 
     while(infile.hasNext()) { 
      nameslist.add(infile.nextLine()); 
     } 
     infile.close(); 
     nameslist.add(newName); 
     names = new PrintWriter("names.txt"); 
     for(int i=0;i<nameslist.size();i++) { 
      names.println(nameslist.get(i).toString()); 
     } 
     names.close(); 
     System.out.println("else"); 
    } 

,我可以{名稱,名稱和INFILE}均聲明爲在類的開頭靜態無效

在此先感謝您的幫助

回答

0

使用infile.hasNextLine()代替infile.hasNext()

變化

while(infile.hasNext()) 

while(infile.hasNextLine()) 

和小的修正

變化

names.println(nameslist.get(i).toString()); 

names.println(nameslist.get(i)); //nameslist holds String objects no need to convert to String again. 

如果不解決問題添加countline變量,並確保你從文件中有多少行讀取。

int countline; 
while(infile.hasNext()) { 
    nameslist.add(infile.nextLine()); 
    countline++;   
}  
System.out.println("Number of line: "+ countline); 
+0

感謝您的回答,這似乎對我更好。 Soryy因爲延期回覆而剛剛在vaca的假期 –

+0

@NickPesa歡迎您。 – Prabhakaran

0

你爲什麼不嘗試只是要清晰這個:

public static void updateNames(String newName) throws FileNotFoundException { 
    try { 
     PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("outfilename", true))); 
     out.println(newName); 
     out.close(); 
    } catch (IOException e) { 
} 

它會在文件末尾附加newName。的

+0

我試過這種方法,但它仍然只會將最後一個名字寫入文件。我可能沒有在使用它的時候做正確的事情,但是非常感謝您的回覆。非常感謝 –