Как использовать BufferedReader в Java
Извините, если это очевидный вопрос, но я не могу его понять. Я работаю над заданием для курса Структуры данных. Это включает получение данных из простого файла .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!");
}
}
}
Благодарю.
Ответы
Ответ 1
Попробуйте прочитать файл:
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();
}
}
Ответ 2
Насколько я понимаю, fr является объектом вашего класса FileReadExample. Таким образом, очевидно, что у него не будет никакого метода, например fr.readLine(), если вы его не создадите самостоятельно.
во-вторых, я думаю, что правильный конструктор класса BufferedReader поможет вам выполнить свою задачу.
String str;
BufferedReader buffread = new BufferedReader(new FileReader(new File("file.dat")));
str = buffread.readLine();
.
.
buffread.close();
это должно помочь вам.