很抱歉,如果这是一个显而易见的问题,但我似乎无法得到它。我正在为数据结构课程分配工作。它涉及从简单的.dat文件中提取数据。我们之前从未使用过Java中的任何文件访问选项,因此教授只是给了我们该工作的代码。
一个名为FileReadExample
的类创建一个新的BufferedReader
对象,打开一个文件,然后应该发出一堆关于该文件的数据。
但我根本无法访问任何数据。
在单独的testMain
文件中,我创建了一个名为FileReadExample
的新fr
对象,然后尝试从那里打印出fr.readLine()
之类的内容,但它告诉我那里没有这样的方法。
我确定我错过了一些非常简单的事情。
教授的代码:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
public class FileReadExample
{
public static void main(String[] args)
{
System.out.println("got here");
try
{
BufferedReader in = new BufferedReader(new FileReader(new File("sample-file.dat")));
System.out.println("File open successful!");
int line = 0;
for (String x = in.readLine(); x != null; x = in.readLine())
{
line++;
System.out.println(x);
if (line <= 3)
{
String[] tokens = x.split(" ");
System.out.println("Number of tokens in line " + line + ": " + tokens.length);
System.out.println("The tokens are:");
for (String token : tokens)
{
System.out.println(token);
}
}
else
{
String[] tokens = x.split("\\|");
System.out.println("Number of tokens in line " + line + ": " + tokens.length);
System.out.println("The tokens are:");
for (String token : tokens)
{
System.out.println(token);
}
Integer[] values = new Integer[tokens.length];
Integer sum = 0;
for (int i = 0; i < tokens.length; i++)
{
sum += Integer.parseInt(tokens[i]);
}
System.out.println("Sum: " + sum);
}
}
} catch (IOException e)
{
System.out.println("File I/O error!");
}
}
}
感谢。
答案 0 :(得分:75)
尝试此操作来读取文件:
BufferedReader reader = null;
try {
File file = new File("sample-file.dat");
reader = new BufferedReader(new FileReader(file));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
答案 1 :(得分:0)
据我所知,fr是FileReadExample类的对象。所以很明显,如果你不自己创建一个方法,就不会有像fr.readLine()这样的方法。
其次,我认为BufferedReader类的正确构造函数将帮助您完成任务。
String str;
BufferedReader buffread = new BufferedReader(new FileReader(new File("file.dat")));
str = buffread.readLine();
.
.
buffread.close();
这应该对你有帮助。