2014-09-24 3 views
2

Я только что начал свою поездку в колледж («Yay»). Я также новичок на сайте, поэтому не стесняйтесь читать мне лекции о том, что я, возможно, сделал не так, как задавать вопросы.Запись файла в java

Мне дали проект, который уже был градуирован и все, и программа должна == >>сначала прочитать строки стандартного ввода (имя входного файла с помощью клавиатуры) и для каждой строки ввода, если пользователь переходит к выходу, приложение завершается; в противном случае приложение интерпретирует строку как имя текстового файла. Приложение создает или воссоздает этот файл и записывает в него две строки вывода, имя файла и текущую дату и время. Затем приложение закрывает файл, открывает его для чтения и записывает его содержимое в стандартный вывод. Приложение записывает на стандартный вывод имя файла, заключенного в квадратные скобки. После записи имени файла приложение записывает содержимое файла с каждой строкой с префиксом соответствующей строки , полным двоеточием и пробелом. Я изложил это так, как это сделал мой профессор, поэтому я извиняюсь за любые неясные заявления. Вот что я получил за это:

import java.util.Date; 
import java.text.DateFormat; 
import java.text.SimpleDateFormat; 
import java.util.Calendar; 
import java.io.File; 
import java.io.ObjectInputStream; 
import java.io.FileInputStream; 
import java.io.IOException; 
import java.util.Scanner; 

public class Project1 
{ 
    public static void main() throws IOException 
    {  
    String input = ""; 
    while(!sc.equals("exit")) 
    { 
     System.out.println("Enter file here!\n Type 'exit' to terminate"); 
     Scanner sc = new Scanner(System.in); 
     input = sc.nextLine();   
     try 
     { 
      File file = new File (input,".txt"); // Creates pointer to a file. 
      ObjectInputStream in = new ObjectInputStream(new FileInputStream(file)); 
      file.createNewFile(); 
      file.getAbsolutePath(); 
      printFileAndDate(file); 
     } 
     catch(IOException e) 
     { 
      System.out.print("Something wrong :("); 
      e.printStackTrace(); 
     } 
    } 
    System.exit(0); 
    } 
    static void printFileAndDate(File temp) 
    { 
    DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); 
    Calendar cal = Calendar.getInstance(); 
    System.out.println("[ " + temp.getPath() + " ]"); 
    System.out.println(dateFormat.format(cal.getTime())); 
    }   
} 

То, что я пытался сделать там было следующее:

-get User Input => Сохранить вход в файл => метод вызова «printFileAndDate» и распечатать файл наряду с текущей датой и временем в правильном формате.

Однако, всякий раз, когда я запускаю его, он всегда дает мне ошибку исключения, а это значит, что файл никогда не был создан или он не смог его найти.

+0

вы можете разместить до трассировки стека? опубликовать ошибки исключения? –

+1

Всегда указывайте точную ошибку в вопросе. –

+0

это запрос «обзор кода», см. Http://codereview.stackexchange.com для этого в будущем. –

ответ

1

перечень вопросов, я мог бы найти:

Первый, ваш главный метод подписи совершенно неправильно

public static void main() throws IOException 

изменение

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

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

Хорошей практикой является использование попытке поймать Заблокировать

Третий, у вас есть varialbe сканера после цикла в то время как, не имеет смысла

while(!sc.equals("exit")) 
     { 
     System.out.println("Enter file here!\n Type 'exit' to terminate"); 
     Scanner sc = new Scanner(System.in); <-?!!!!!! 

изменение

System.out.println("Enter file here!\n Type 'exit' to terminate"); 
    Scanner sc = new Scanner(System.in); 
    while(!sc.equals("exit")) 
     { 

Четвертый, вы определяете переменную файла таким образом

File file = new File (input,".txt"); <-- totally wrong 

изменение

File file = new File ("input.txt"); <-- if you use relative path 

Пятая там не нужно для System.exit(0); в конце main метода

+1

В-пятых, не нужно 'System.exit (0)' в конце 'main'. –

+0

@DavidConrad Я согласен, почему голосует? –

+0

Я не голосовал за вас. –

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