2017-01-23 1 views
2

Je travaille sur un programme simple qui prend l'entrée de l'utilisateur, puis l'enregistre avec un nom de fichier spécifique.Je ne peux pas manipuler le nom du fichier que la classe de création de fichiers crée

Pour être plus précis:

public static Scanner in = new Scanner(System.in); 
public static boolean quit = false; 
public static String name; 
public static FileWriter fw; 

public static void main(String[] args) throws IOException { 

    System.out.print("File name: "); 
    name = in.nextLine(); 

    fw = new FileWriter(name + ".txt", false); 
    System.out.println("Continue typing/type save to quit"); 
    while(!quit) { 
     String word = in.nextLine(); 
     if(word.equals("save")) { 

      fw.close(); 
      quit = true; 
     } 

     else {    
      fw.write(word + "\n"); 
     } 

    } 
  1. programme demande le nom du fichier.
  2. L'utilisateur est en train de taper des mots jusqu'à ce qu'il tape « sauver » qui enregistre le fichier

Comme vous pouvez le voir programme demander à l'utilisateur pour le nom de fichier au début, avant qu'il ne commence à taper. C'est mon problème. Je veux que mon programme demande à l'utilisateur un nom de fichier à la fin, après avoir tapé tous les mots. Malheureusement, je ne peux pas faire cela parce que la classe de création de fichiers crée le fichier quand un nouvel objet est créé et le nom ne peut pas être changé plus tard.

Je voudrais savoir s'il y a une solution à mon problème ou quel type d'information devrais-je rechercher?

Répondre

1

Vous avez deux options:

  1. stocker toutes les entrées utilisateur dans la mémoire (dans un List<String> par exemple), puis d'écrire les mots après avoir vu le mot-clé save et obtenir le nom du fichier de sortie de l'utilisateur.
  2. Ouvrez le fichier de sortie comme vous le faites, mais avec un nom temporaire et écrivez les mots au fur et à mesure que vous les lisez. En voyant le mot clé save, fermez le fichier, obtenez le nom de fichier choisi par l'utilisateur, puis renommez le fichier temporaire au choix de l'utilisateur.

Sauf si vous avez besoin de traiter des millions de mots, j'irais avec l'option 1 pour sa simplicité.

+1

Merci! La première option a résolu mon problème – sviero