как создать глобальный файловый объект в Java?

#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. Вы исправили свою проблему?