@thatmaniscool

Как дописать строку в конец текстового файла в Java?

Простая программа для генерации пароля. Собственно, нужно составить список паролей, но проблема в том, что каждый раз он просто перезаписывает первую строку.
Сама программа ниже:
import java.io.*;
import java.util.*;

public class MyTextFile {
	public static class Characters implements Generator <java.lang.Character>{
		public static char [] array = "1234567890qwertyuiopasdfghjklzxcvbnm".toCharArray();
		public static Random rand = new Random ();
		@Override
		public Character next() {
			// TODO Auto-generated method stub
			return array[rand.nextInt(array.length)];
		}
	}
	
	public static void write (String password){
		try{
		PrintWriter print = new PrintWriter (new File ("Password.txt"));
		print.write(password);
		print.close();
		} catch (IOException e){
			throw new RuntimeException (e);
		} 
	}
	
	public static void main (String [] args) throws IOException {
		StringBuilder str = new StringBuilder ();
		for (int i=0; i!=10; i++){
			for (int j=0; j!=10; j++){
				str.append(new Characters().next()); // Создаем пароль
			}   str.append("\n");
			write (str.toString()); // Записываем пароль в файл.
			str.delete(0, str.length()); // Чистим.
		}
	}
}
  • Вопрос задан
  • 1144 просмотра
Пригласить эксперта
Ответы на вопрос 3
Shockoway
@Shockoway
Ссылка
А вообще, если подразумевается, что с каждой "сессией" файл всё таки будет обнуляться, то разумнее сначала сгенерировать необходимое кол-во паролей, а уже потом записать их все разом. (Ваш Кэп)
Ответ написан
@reus
Если вы имеете в виду что генерится 10 паролей и все 10 в одной строке, то просто добавьте
print.write(password+"\n")

Но судя по вашему коду ваши пароли затираются из-за неудачного метода write. Вынесите
PrintWriter print = new PrintWriter (new File ("Password.txt"));
за пределы метода write. Можно сделать к примеру так:
Если вы имеете в виду что генерится 10 паролей и все 10 в одной строке, то просто добавьте 
print.write(password+"\n")

Но судя по вашему коду ваши пароли затираются из-за неудачного метода write. Вынесите 
PrintWriter print = new PrintWriter (new File ("Password.txt"));
за пределы метода write. Можно сделать к примеру так:
<code lang="java">
import java.io.*;
import java.util.*;

public class MyTextFile {
  public static class Characters implements Generator <java.lang.Character>{
    public static char [] array = "1234567890qwertyuiopasdfghjklzxcvbnm".toCharArray();
    public static Random rand = new Random ();
    @Override
    public Character next() {
      // TODO Auto-generated method stub
      return array[rand.nextInt(array.length)];
    }
  }
  
  public static void write (PrintWriter print, String password){
    try{
    print.write(password);
    print.close();
    } catch (IOException e){
      throw new RuntimeException (e);
    } 
  }
  
  public static void main (String [] args) throws IOException {
    StringBuilder str = new StringBuilder ();
    PrintWriter print = new PrintWriter (new File ("Password.txt"));
    for (int i=0; i!=10; i++){
      for (int j=0; j!=10; j++){
        str.append(new Characters().next()); // Создаем пароль
      }   str.append("\n");
      write (print, str.toString()); // Записываем пароль в файл.
      str.delete(0, str.length()); // Чистим.
    }
  }
}
</code>
Ответ написан
Комментировать
@odissey_nemo
Программист, ГИС-системы, растры, космоснимки
Открывать каждый раз файл в методе write не на перезапись с начала файла, как сделано здесь, а на дозапись. Конкретные параметры и вызовы не помню)))
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы