我有一个.txt文件,假设它命名为My。我需要读取这个文件内容。我通过命令行参数传递文件。我应该在命令提示符下将文件传递给args []数组。请帮助..............
答案 0 :(得分:3)
您可以使用命令行参数获取文件名:
java -jar myapp.jar abc.txt
或
java a.b.c.MyApplication abc.txt
会将abc.txt
放入args[0]
public static void main(String[] args)
然后您可以打开文件并从Java代码中读取它。
如果您想要文件内容(而不是编写Java代码来阅读它们),您可以通过System.in
获取它们:
java -jar myapp.jar < abc.txt
(以上内容取决于您使用的shell和操作系统类型)
InputStream data = System.in;
答案 1 :(得分:0)
有时很难知道从哪里开始,但这部分问题的答案已多次回答。但是,也许是为了帮助你,最好指出你正确的方向。
您想要的步骤是:
1)获取表示args数组中文件路径的String,可能类似于:
String filePath = args[0];
但是,您还需要检查args中是否有项目以防止在从args读取时出现异常的可能性(如果没有从命令行传递任何内容),例如:
String filePath;
if(args.length > 0){
filePath = args[0];
}else{
// do something to handle the error, probably exit the program?
}
有关详细信息,请参阅此处:Link to java tutorial
2) 然后,您希望使用File构造函数从该字符串创建File对象。 Link to javadoc
File inputFile = new File(filePath);
3) 然后你需要逐行读取该文件。为此我会指出你的另一个答案,因为有很多方法可以做到这一点: Reading from a file - SO question
希望这有帮助。
答案 2 :(得分:0)
这是你可能想要的代码
String path =arr[0]; //first approach
/*Scanner in = new Scanner(System.in);
System.out.println("Enter the path of the file..."); // whole block command second approac
String path = in.nextLine(); */
File file = new File(path);
//apply your logic i just did some reading and writing to a file
/*BufferedReader inputStream = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
PrintStream out = new PrintStream(new FileOutputStream("a.txt"));
while(true)
{
String line = inputStream.readLine();
if(line == null)
break;
else
out.println(line);
}
*/
如果您使用第一种方法运行程序
java className path_of_file
在第二种方法中,它会在运行时询问您的文件路径,然后您可以输入文件的路径。就像java className