线程" main"中的例外情况java.io.FileNotFoundException:

时间:2014-10-12 15:17:18

标签: java swing exception-handling cmd classpath

我在运行CMD中的代码时遇到问题

public class Testing
{
  public static void main(String args[]) throws TestingFormatException, IOException
  {
    Scanner scanner = new Scanner(System.in);
    String filename = scanner.nextLine();

    File input = new File(filename);
    FileReader fileInput = new FileReader(input);

    TestingIo file = new TestingReaderWriter();
    file.read(fileInput);
    }
} 

类和java文件都在同一目录中

C:\testing\Testing.java

C:\testing\Testing.class

C:\testing\test.txt

以下是我输入的以下命令:

C:\testing> javac Testing.java
C:\testing> java Testing > test.txt

它告诉我这个错误

Exception in thread "main" java.io.FileNotFoundException: # Show contents 
(The system cannot find the file specified)
        at java.io.FileInputStream.open(Native Method)
        at java.io.FileInputStream.<init>(FileInputStream.java:106)
        at java.io.FileReader.<init>(FileReader.java:55)
        at Mipsim.main(Mipsim.java:22)

但是当我键入此命令时没有错误:

C:\testing> javac Testing.java
C:\testing> java Testing 
C:\testing> test.txt


CLASSPATH is set to .;C:\Program Files (x86)\Java\jdk1.6.0_24\bin

Test.txt

#显示内容    TEST1    TEST2

我可以知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

假设您执行的命令实际上是

java Testing < test.txt

这基本上意味着:执行Testing类,并且在从System.in读取时,不要读取用户输入的内容,而是读取test.txt文件中的内容。

由于test.text文件包含# Show contents,并且由于您的类从System.in中读取一行并将其视为文件名,因此它会有效地尝试从名为# Show contents的文件中读取,它不存在,因此是例外。