2013-11-27 1 views
1

Я пытаюсь написать метод, который обновляет .txt-файл с новой строкой ..... что у меня сделано 1) прочитать все строки из ранее сделанного файла txt 2) ставит их в ArrayList 3) записывает новую строку в ArrayList 4), а затем записывает ToString() объектов этого ArrayList в новый файлобновить файл .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"); 
    } 

просто быть ясно, как я могу {имя, имена и входной_файл} все объявлены как статическая пустота в начале класса

заранее спасибо за любую помощь

ответ

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 для отложенного ответа ive просто на 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

Я пробовал этот подход, но он все равно записывал бы только фамилию в файл. Я, возможно, не делал что-то правильно при использовании, но благодарю anyways за ответ .... высоко оценил –