2016-12-17 2 views
-2

Я пытаюсь создать текстовый файл и добавить некоторые детали в него с помощью Java, когда в моем графическом приложении нажата кнопка, имя текста файл должен быть текущей датой и временем, а расположение текстового файла должно быть относительным. Вот фрагмент кода, который я использовал для этого.Создание текстового файла с текущей датой и временем в качестве имени файла в Java

 public void actionPerformed(ActionEvent e){ 
      SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd_HH:mm:ss"); 
      Date date = new Date(); 
      String fileName = dateFormat.format(date) + ".txt"; 
      File file = new File(fileName); 
      PrintWriter pw; 
      try{ 
       if(file.createNewFile()){ 
        pw = new PrintWriter(file); 

        //Write Details To Created Text File Here 

        JOptionPane.showMessageDialog(null, "The Statistics have successfully been saved to the file: " 
          + fileName); 
       }else{ 
        JOptionPane.showMessageDialog(null, "The save file " + fileName 
          + " already exists, please try again in a while."); 
       } 
      }catch(IOException exception){ 
       JOptionPane.showMessageDialog(null, exception + ", file name:- " + fileName); 
      }catch(Exception exception){ 
       JOptionPane.showMessageDialog(null, exception); 
      } 
     } 

К сожалению, когда я бегу выше код я получаю следующее сообщение об ошибке:

enter image description here

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

+0

У вас нет косых черт ('/') в вашем имени файла – lordvlad

+0

Я попытался с помощью 'new SimpleDateFormat (« yyyy-MM-dd_HH-mm-ss »); но я все равно получаю ту же ошибку. –

+0

@lordvlad Я попробовал это сейчас, и это сработало. Работает формат 'yyyy-MM-dd HH-mm-ss'. Спасибо за помощь. –

ответ

1

Гадание: либо

  1. ваша операционная система не позволяет использовать символ/в именах файлов
  2. или думает, что/разделяет каталоги; Другими словами: вы пытаетесь создать файл в подкаталоге ... что, вероятно, не существует

и не имеет отношения, но тоже важно: вы не должны смешивать такие вещи. Вы должны поместить код, который создает и записывает этот файл в свой собственный класс полезности; вместо того, чтобы вставлять его в ваш код, связанный с пользовательским интерфейсом.

Вы видите, если вы создали здесь вспомогательный класс; это также было бы много проще выполнить некоторые единицы тестирования на этом; чтобы он выполнял то, что вы ожидаете от этого.

+0

Благодарим вас за это, я изменил формат даты на 'yyyy-MM-dd HH-mm-ss', и программа работает. –

+0

@MoizMansoorAli Рад это услышать. Если да, пожалуйста, подумайте о том, чтобы принять мой ответ (все еще возможно, даже для закрытых вопросов). – GhostCat

0

Файловые системы имеют ограничения на то, какие символы могут входить в имена файлов. Например, как говорит @lordvlad, косые черты используются для разделения каталогов успеха. Кроме того, в Windows : используется для разделения имени диска (т. Е. C: \ ...).

+0

Да, я полностью забыл, что компилятор мог неверно интерпретировать символы '/' и ':' как путь к файлу вместо имени файла. Спасибо за помощь. –

+1

Это не компилятор. Это файловая система. Все из них имеют правила, которым разрешено иметь имена файлов и пути. – Fildor

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