Java对象实例化读取文件

时间:2014-06-25 04:18:11

标签: java

我是java的新手。我有一个课程如下

import java.io.*;
class Lexer
{
     private static final int KEYWORDS = 11;
     private StreamTokenizer tokenizer;
     private String punctuation = ",:;.()";
     private Token[] punctuationTokens =
    {
    Token.COMMA, Token.COLON, Token.SEMICOLON, Token.PERIOD, Token.LEFT_PAREN, Token.RIGHT_PAREN
};

// Constructor that creates a lexical analyzer object given the source file

     public Lexer(String fileName) throws FileNotFoundException
    {
    tokenizer = new StreamTokenizer(new FileReader(fileName));
    tokenizer.ordinaryChar('.');
    tokenizer.quoteChar('"');
    }
}

我编写了以下代码来实例化一个对象:

Lexer test = new Lexer("C:\\Users\\Kris\\Desktop\\test.txt");

它返回给我这个错误:无法编译的源代码 - 未报告的异常java.io.FileNotFoundException。谁能让我知道如何实例化这个对象给出类和文件“test.txt”?我非常感谢你的帮助。

2 个答案:

答案 0 :(得分:1)

  

unreported exception java.io.FileNotFoundException.

您还需要使用Object围绕try-catch创建调用,因为它可能会抛出FileNotFoundException或在您执行此操作的方法中添加throws。< / p>

 Lexer test = new Lexer("C:\\Users\\Kris\\Desktop\\test.txt");

此外,针对FilePath提出Elliott Frisch的建议。


由于IDE中的C:User Access Control可能无法访问Windows驱动器的文件,因此最好将IDE作为Administrator运行{{1}}并再次执行代码,请仔细检查路径。

答案 1 :(得分:0)

如果我理解你的问题,那么

Lexer test = new Lexer("C:\Users\Kris\Desktop\test.txt");

应该是

Lexer test = new Lexer("C:/Users/Kris/Desktop/test.txt");

你也可以使用(对我来说不太可读)

Lexer test = new Lexer("C:\\Users\\Kris\\Desktop\\test.txt");

因为"\"开始escape sequence

  

以反斜杠(\)开头的字符是转义序列,对编译器有特殊意义。