编辑:运行我正在使用的代码" 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();
}
答案 0 :(得分:0)
java filename.java input1.txt
对于运行java程序不正确,您需要编译*.java
文件以获取*.class
文件,然后您可以运行该文件:
java filename input1.txt
假设您的类在默认包中,并且您在编译命令的输出目录中运行该命令,或者使用该类的完全限定类名,即包括包名。例如,如果您的类位于包foo/bar/baz
(源文件夹中的子文件夹)中并且包含声明package foo.bar.baz;
,那么您需要像这样指定您的类:
java [-cp your-classpath] foo.bar.baz.filename input1.txt
要找到input1.txt
,它必须位于运行命令的同一目录中。
your-classpath
是由系统相关分隔符(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
总而言之,您需要知道/做的事情如下: