用java编写文件

时间:2014-09-24 23:42:58

标签: java

我刚刚开始我的大学之旅(' Yay')。我也是该网站的新手,所以我可以随意向我讲解我可能做错的事情,就问问题而言。

我获得了一个项目,该项目已经评分完毕,该程序应该==>> 首先读取标准输入行(使用键盘输入文件名),对于每行输入,如果用户进入exit,则应用程序终止;否则,应用程序将该行解释为文本文件的名称。应用程序创建或重新创建此文件,并向其写入两行输出,文件名和当前日期和时间。然后,应用程序关闭文件,重新打开它以进行读取,并将其内容写入标准输出。应用程序将标准括号括起的文件名写入标准输出。写完文件名后, 应用程序写入文件的内容,每行以相应的行为前缀 数字,一个完整的冒号和一个空格。 我就像我的教授一样措辞,所以我为任何不明确的陈述道歉。这就是我得到的:

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()));
  }        
}

我试图做的是以下内容:

- 获取用户输入=>将输入另存为文件=>调用方法" printFileAndDate"并以正确的格式打印文件以及当前日期和时间。

但是,每当我运行它时,它总是会给我一个异常错误,这意味着该文件从未真正创建过,或者它无法找到它。

1 个答案:

答案 0 :(得分:1)

我可以找到ISSUE列表:

首先,您的主要方法签名是完全错误的

public static void main() throws IOException

更改为

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

第二,在main方法中抛出异常不是一个好习惯。

好的做法是使用try catch block

第三次,在while循环之后你有你的Scanner变种,这是没有意义的

 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 file = new File (input,".txt"); <-- totally wrong

更改为

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

第五 System.exit(0);方法结束时不需要main