2017-01-23 1 views
2

Я работаю над простой программой, которая берет входные данные от пользователя, а затем сохраняет его с определенным именем файла.Я не могу манипулировать именем файла, созданного классом файлового редактора

Чтобы быть более точным:

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. Программа запрашивает имя файла.
  2. Пользователь не печатает слова, пока он печатает «сохранить», который сохраняет файл

Как вы можете видеть, программа запрашивает у пользователя имя файла в начале, прежде чем он начнет печатать. Это моя проблема. Я хочу, чтобы моя программа попросила пользователя указать имя файла в конце, после того как он набрал все слова. К сожалению, я не могу этого сделать, потому что класс filewriter создает файл при создании нового объекта и имя не может быть изменено позже.

Я хотел бы знать, есть ли какие-либо решения моей проблемы или какую информацию я должен искать.

ответ

1

У вас есть два варианта:

  1. хранить все данные, введенные пользователем в памяти (в List<String>, например), а затем выписывать слова после просмотра save ключевого слова и получение выходного файла от пользователя.
  2. Откройте выходной файл, как вы делаете, но с временным именем и напишите слова по мере их чтения. Увидев ключевое слово save, закройте файл, получите выбранное имя пользователя и переименуйте временный файл по выбору пользователя.

Если вам не нужно обрабатывать миллионы слов, я бы выбрал вариант 1 для его простоты.

+1

Спасибо! Первый вариант решил мою проблему – sviero

Смежные вопросы