Java 通过主函数参数输入文件名(参数[0])

Java 通过主函数参数输入文件名(参数[0]),java,netbeans,Java,Netbeans,编辑:为了运行我的代码,我使用了java filename.java input1.txt,这是否正确 我正在创建一个程序,在这个程序中,我必须将字符串标记为单独的单词,并且该字符串位于文本文件中。我必须通过命令行参数args[0]等指定终端中的文本文件名。如果我通过路径指定,我可以扫描和打印文本文件的内容,但当我尝试使用args[0]执行此操作时,它似乎不起作用。我用的是网豆。我将在此处附上我的代码部分: public static void main(String[] args) {

编辑:为了运行我的代码,我使用了java filename.java input1.txt,这是否正确

我正在创建一个程序,在这个程序中,我必须将字符串标记为单独的单词,并且该字符串位于文本文件中。我必须通过命令行参数args[0]等指定终端中的文本文件名。如果我通过路径指定,我可以扫描和打印文本文件的内容,但当我尝试使用args[0]执行此操作时,它似乎不起作用。我用的是网豆。我将在此处附上我的代码部分:

public static void main(String[] args) {   
    try {
        File f = new File(args[0]);   
        //using this commented out section using paths works File f = new 
        //File("NetBeansProjects/SentenceUtils/src/input1.txt");
        Scanner input = new Scanner(new FileInputStream(f));

        while(input.hasNext()) {
            String s = input.next();
            System.out.println(s);
        }
    } catch(FileNotFoundException fnfe) {
        System.out.println("File not found");
    }

    SentenceUtils s = new SentenceUtils();
}
不适合运行java程序,您需要编译*.java文件以获得*.class文件,然后可以像以下方式运行该文件:

java filename input1.txt
假设您的类位于默认包中,并且您正在compile命令的输出目录中运行该命令,或者使用该类的完全限定类名,即包括包名。例如,如果您的类位于源文件夹的包foo/bar/baz子文件夹中,并且具有包声明package foo.bar.baz;,然后您需要像这样指定您的类:

java [-cp  your-classpath] foo.bar.baz.filename input1.txt
要找到input1.txt,它必须位于运行命令的同一目录中

类路径是一个目录列表,由依赖于系统的分隔符分隔;对于windows,:对于linux。。。或存档,java命令用于查找要运行的类及其依赖项

NetBeansProjects/SentenceUtils/src/input1.txt是一个相对路径

File f = new File("NetBeansProjects/SentenceUtils/src/input1.txt");
如果这样做有效,则表示当前工作目录(即计算所有相对路径的目录)是名为NetBeansProjects的目录

您将获得FileNotFoundException,因为您的文件应位于

NetBeansProjects/input1.txt
要找出正在运行的程序的当前工作目录,可以添加以下语句:

System.out.println(new File("").getAbsolutePath());
将input.txt放在该目录中,就会找到它

或者,您可以传递输入文件的绝对路径。绝对路径是可用于从本地文件系统上运行程序的任何位置定位文件的路径。例如:

    java -cp <your-classpath> <fully-qualified-name-of-class> /home/john/myfiles/myprogects/...../input1.txt
总而言之,您需要知道/做以下几点:

程序类及其包文件名的位置 输入文件input.txt的位置 相应地传递正确的参数
你是如何运行你的程序的?它似乎不起作用。。。以什么方式?没有输出?例外请阅读并改进问题。您是否已验证args[0]是否确实包含您的路径?当我通过终端运行它时,它的工作方式与中的不同,它总是向我显示“未找到文件”错误。此外,我通过netbeans运行它,并通过执行project->properties->run在netbeans中指定命令行参数,并将input1.txt放在lineinput1.txt中。input1.txt与我的程序btwPerfect位于同一路径中,谢谢,我将在明天上午对此进行研究。我已经走了一整晚了,我都快炸了哈哈。谢谢:不,您没有将.class文件传递给java命令。传递类的完全限定名:java com.mycompany.myproject.Main。Java然后在类路径中查找这个类。@JBNizet我很惭愧:
    java -cp <your-classpath> <fully-qualified-name-of-class> /home/john/myfiles/myprogects/...../input1.txt