Noob问题,在Java中将文件名/目录传递到命令行
我试图对用户是否在命令行中输入(1)文件名或(2)目录名进行一些处理。其他任何东西都应该抛出一个错误。从最简单的案例开始,我写了以下内容:Noob问题,在Java中将文件名/目录传递到命令行,java,file-io,Java,File Io,我试图对用户是否在命令行中输入(1)文件名或(2)目录名进行一些处理。其他任何东西都应该抛出一个错误。从最简单的案例开始,我写了以下内容: import java.io.*; import java.util.*; public class RemoveDuplicates { public static void main(String[] args) { if (args.length != 1) { System.out.println(
import java.io.*;
import java.util.*;
public class RemoveDuplicates {
public static void main(String[] args) {
if (args.length != 1) {
System.out.println("Program accepts one command-line argument. Exiting!");
System.exit(1);
}
File f = new File(args[0]);
if (f.isDirectory()) {
System.out.println("is directory");
}
else if (f.isFile()) {
System.out.println("is file");
}
else {
System.out.println("Shouldn't happen");
}
}
}
在命令行中,我键入:java RemoveDuplicates example.txt
我还尝试了java RemoveDuplicates“example.txt”,但这也不起作用。因此,我想知道我的代码是否错误,或者我如何将其传递到命令行对于初学者来说是错误的
其次,如何传入目录名?就像你的目录是myDirectory一样,是不是同样的东西:java RemovedUpplicates myDirectory
第三,为什么如果我把我的文件f=new File(args[0])放入一个try块并有一个catch块,我会得到一个关于try块中的内容的编译错误,而不会抛出异常。我以为文件抛出了异常?提前谢谢 1)您确定您的工作目录中存在example.txt吗?尝试添加以下内容,看看会发生什么
File f = new File(args[0]);
if (!f.exists()) {
System.out.println("does not exist");
}
2) 你有这个权利
3) 事实上,我不明白这个错误。你是怎么做的
java-MyProg“c:\testdir\mydir”
)传入相对于当前工作目录的目录路径(例如java-MyProg-testdir/mydir
)
文件f=新文件(args[0])。我以为文件抛出了异常
创建新的文件
对象不会创建物理文件,因此不会按预期引发任何IOException
。仅当您尝试打开文件以读取或写入时,才会引发FileNotFoundException
。因此,在将文件用于IO之前,始终检查文件是否存在是一种很好的做法
是的,文件名与我的.java和.class文件位于同一目录中,但是我得到的文件名现在不存在,因为我把它放进去了。我试着写一个文件,它把文件放在同一个目录下,我的文件就在这个目录下。编辑:我只是用一个目录尝试了一下,看起来效果不错。
example.txt
应该在运行程序的目录中,而不一定是.java
和.class
文件所在的目录。对我来说,这些都是相同的目录。好的,我现在就可以使用了。在我的目录中,它显示example.txt,但是,我尝试编写的单独文件没有.txt扩展名,因此我假设Windows没有显示它,因为它找到了该文件。因此,我从example.txt名称中删除了.txt。谢谢你的帮助!