赋值是读取字符串行和文本文件中的三个int行,这些文本文件看起来像这样(行之间没有空格):
Alex Miller
10
8
6
为此,我必须使用TextIO
类来读取文件,该类有一堆静态方法(书中的子例程指的是它们)用于输入/输出。以下是我TextIO
方法的readLine()
类的代码段,我尝试使用该方法,但未成功。
/**
* Opens a file with a specified name for input. If the file name is null, this has
* the same effect as calling readStandardInput(); that is, input will be read from standard
* input. If an
* error occurs while trying to open the file, an exception of type IllegalArgumentException
* is thrown, and the input source is not changed. If the file is opened
* successfully, then after this method is called, all of the input routines will read
* from the file, instead of from standard input.
*/
public static void readFile(String fileName) {
if (fileName == null) // Go back to reading standard input
readStandardInput();
else {
BufferedReader newin;
try {
newin = new BufferedReader( new FileReader(fileName) );
}
catch (Exception e) {
throw new IllegalArgumentException("Can't open file \"" + fileName + "\" for input.\n"
+ "(Error :" + e + ")");
}
if (! readingStandardInput) { // close current input stream
try {
in.close();
}
catch (Exception e) {
}
}
emptyBuffer(); // Added November 2007
in = newin;
readingStandardInput = false;
inputErrorCount = 0;
inputFileName = fileName;
}
}
这就是我想要做的事情:
public class ReadingFromFile {
public static void main(String[] args) {
String name; // The student's name, from the first line of the file.
int exam1, exam2, exam3; // The student's grades on the three exams.
double average; // The average of the three exam grades.
TextIO.readFile("testdata.txt"); // Read from the file.
name = TextIO.getln(); // Reads the entire first line of the file.
exam1 = TextIO.getlnInt();
exam2 = TextIO.getlnInt();
exam3 = TextIO.getlnInt();
average = ( exam1 + exam2 + exam3 ) / 3.0;
System.out.printf("The average grade for %s was %1.1f", name, average);
System.out.println();
}
}
但是我收到了这条消息:
线程中的异常" main" java.lang.IllegalArgumentException:无法打开文件" testdata.txt"输入。 (错误:java.io.FileNotFoundException:testdata.txt(系统找不到指定的路径)) 在TextIO.readFile(TextIO.java:133) 在ReadingFromFile.main(ReadingFromFile.java:9)
这个TextIO.java:133实际上是
throw new IllegalArgumentException("Can't open file \"" + fileName + "\" for input.\n"
+ "(Error :" + e + ")");
我还尝试输入datatest.text的路径文件夹名称,如下所示:
TextIO.readFile("src/default package/testdata.txt");
但我又得到了同样的例外。
如何使用此类正确读取文件?
答案 0 :(得分:0)
所以我测试了你的代码片段:
public static void main(String[] args) {
String name; // The student's name, from the first line of the file.
int exam1, exam2, exam3; // The student's grades on the three exams.
double average; // The average of the three exam grades.
TextIO.readFile("C:/Users/username/Desktop/test.txt"); // Read from the file.
name = TextIO.getln(); // Reads the entire first line of the file.
exam1 = TextIO.getlnInt();
exam2 = TextIO.getlnInt();
exam3 = TextIO.getlnInt();
average = ( exam1 + exam2 + exam3 ) / 3.0;
System.out.printf("The average grade for %s was %1.1f", name, average);
System.out.println();
}
文本文件看起来像这样
asd
2
3
4
输出为:The average grade for asd was 3.0
你复制了while TextIO
类吗?