#java #eclipse #file
#java #eclipse #файл
Вопрос:
предположим, я хочу прочитать 1-ю строку в одном методе и 2-ю строку в другом методе, тогда как читать? как получить доступ к файлу глобально?
class File{
private static void createFogDevices(int userId, String appId) throws Exception{
File file = new File("/home/madhu/Desktop/data.txt");
BufferedReader reader = null;
reader = new BufferedReader(new FileReader(file));
FogDevice cloud = createFogDevice(reader.readLine());
}
private static void addMobile(int userId, String appId) throws Exception{
FogDevice mobile = createFogDevice(reader.readLine());
}
}
пожалуйста, помогите, я получаю сообщение об ошибке в reader.readLine() в методе addMobile.
Комментарии:
1. почему бы вам не сделать его глобальным в классе?
2. не могли бы вы это сделать? я получаю сообщение об ошибке
3. можете ли вы поместить сюда весь код целиком?
Ответ №1:
Прежде всего, вы можете передать дополнительные параметры path и номер строки. Если вы используете java 8. Пожалуйста, смотрите следующий пример для небольших файлов:
private static void addMobile(int userId, String appId, String path, int lineNumb) throws Exception{
String mobile =Files.readAllLines(Paths.get(path)).get(lineNumb);
}
Если вы используете java 7. Пожалуйста, посмотрите следующий пример:
private static void addMobile(int userId, String appId, String path, int lineNumb) throws Exception{
String infoString;
try (BufferedReader br = new BufferedReader(new FileReader(path))) {
for (int i = 0; i < lineNumb; i ) {
br.readLine();
}
infoString = br.readLine();
}
}
Если вы хотите сделать BufferedReader и File глобальными переменными, вы можете использовать следующий пример:
public class File {
private static java.io.File file;
private static BufferedReader reader;
static {
try {
file = new java.io.File("/home/madhu/Desktop/data.txt");
reader = new BufferedReader(new FileReader(String.valueOf(file)));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
private static void createFogDevices(int userId, String appId) throws Exception {
FogDevice cloud = createFogDevice(reader.readLine());
}
private static void addMobile(int userId, String appId) throws Exception {
FogDevice mobile = createFogDevice(reader.readLine());
}
}
Если вы хотите прочитать от 6 до 8 строк, вы можете использовать следующий код:
String line;
try (Stream<String> lines = Files.lines(Paths.get("G:\B\1.txt"))) {
line = lines.skip(6).limit(8).collect(Collectors.joining());
}
Комментарии:
1. Что делать, если мне нужно прочитать несколько строк без указания номера строки, но с использованием цикла for ?предположим, как для(I=0;I<5;I )reader.readLine(); как читать в таком случае? Я использую java 8. Пожалуйста, помогите @Andriansoluk
2. Если вы используете java 7, вы можете использовать следующий код: String line = «»; try (BufferedReader br = new BufferedReader(новый файловый редактор (путь))) { for (int i = 0; i < 5; i ) { line = br.readLine(); } } System.out.println(строка);
3. Предположим, что с 6-й по 8-ю строку я буду читать другим методом, тогда я должен написать тот же код? Или как прямо там? @Andian soluk
4. Вы можете использовать следующий код: Строка строки; try (Stream<String> lines = Files.lines(Paths.get(path))) { line = lines.skip(6).limit(8).collect(Collectors.joining()); }
5. обновлен ответ @MadhusmitaSahoo. Вы исправили свою проблему?