提示用户输入文件名

时间:2014-03-03 16:10:18

标签: java

我正在尝试学习如何提示用户输入文件名,而不是预先定义它,以便Java可以使用扫描程序并通读它。我编写了一个程序来执行我需要它做的事情,但只有在预定义文件时才会这样做。

我在网站上查找了一些重复的问题,并找到了一些,但问的范围比我的位置更先进。任何人都可以向我提供一些关于如何提示用户输入他/她想要的文件的指导,而不是预先定义它(如下面的代码设置为)。

注意 - 这是假设读入的文件具有整数< 0和>因此,为什么最小/最大函数是按照它们的方式完成的......只是想一步一步地教自己。

import java.io.*;
import java.util.*;

public class ProcessNumbers {

public static void main(String[] args) throws FileNotFoundException {
    Scanner input = new Scanner(new File("inputdata.txt"));
    int max = 0;
    int min = 0;
    int sum = 0;
    int count = 0;
    double average = 0;

    System.out.println("Enter file name: ");  //currently a println for ease of reading via Run

    while (input.hasNext()) {
        if (input.hasNextInt()) {
            int number = input.nextInt();
            sum += number;
            count++;
            average = (double) (sum) / count;
            if (number > max) {
                max = number;
            }
            if (number < min) {
                min = number;
            }
        } else {
                input.next();   
            }
    }

    System.out.println("Maximum = " + max);
    System.out.println("Minimum = " + min);        
    System.out.println("Sum = " + sum);
    System.out.println("Count = " + count);
    System.out.println("average = " + average);
}

}

4 个答案:

答案 0 :(得分:1)

试试这个:

System.out.println("Enter file name: ");
Scanner fileNameScanner = new Scanner( System.in );
String fileName = "";

if ( fileNameScanner .hasNext() ) {
    fileName = fileNameScanner.next();
}
...

使用fileName字符串创建一个File对象,并根据您的要求使用。

答案 1 :(得分:0)

最简单的方法是替换

new File("inputdata.txt")

new File(args[0])

这样,第一个命令行参数将被视为文件名。

答案 2 :(得分:0)

您可以使用Scanner来读取用户的输入(它不仅仅是从File读取):

Scanner prompt = new Scanner(System.in);

System.out.print("Enter name of the file: ");
String name = prompt.next(); // enter "inputdata.txt"

Scanner input = new Scanner(new File(name));
// ...

答案 3 :(得分:0)

另一种方法是使用Console。 您可以用扫描仪替换从新方法返回的文件中读取:

Scanner input = new Scanner(getFileFromUser());
...

private static File getFileFromUser() {
   Console c = System.console();
   if (c == null) {
       System.err.println("No console.");
       System.exit(1);
   }
   String filePathname = c.readLine("Enter file pathname: ");

   return new File(filePathname);
}

另外,请不要忘记在 main 方法结束时关闭扫描仪,以避免资源泄漏:

input.close();