用java编写文件

File writing in java

本问题已经有最佳答案,请猛点这里访问。

我刚开始大学之旅("耶")。我也是这个网站的新手,所以你可以随意向我讲讲我在提问方面可能做错的事情。

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
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!
 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
public static void main() throws IOException

改为

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

其次,在主方法中抛出异常不是一个好的实践。

好的做法是使用Try-Catch块

第三,在while循环之后,您的扫描仪是可变的,这是不合理的。

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

改为

1
2
3
4
5
   System.out.println("Enter file here!
 Type 'exit' to terminate"
);
   Scanner sc = new Scanner(System.in);
   while(!sc.equals("exit"))
         {

第四,通过这种方式定义文件变量

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

改为

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

第五,在main方法的末尾不需要System.exit(0);