Прочитать файл, содержащий несколько записей, и вывести одну запись на основе пользовательского ввода - PullRequest
0 голосов
/ 08 апреля 2019

Я новичок в Java, и это может звучать очень глупо, но! Предположим, у вас есть этот текстовый файл где-то на вашем компьютере

The_txt.txt

Anthony

anthonyk@somewhere.com

01234567891

место


Maria

maria@somewhere.com

1234561234

LOCATION2


George

george@somewhere.com

1234512345

Location3


Что я хочу сделать с этим txt, так это то, что я предлагаю пользователю ввести номер телефона, поэтому, если, например, пользователь предоставит номер телефона Марии (1234561234), программа выдаст

Maria

maria@somewhere.com

1234561234

LOCATION2

Мой кусок кода для этой задачи:

    private static void Search_Contact_By_Phone(File file_location){

        Scanner To_Be_String = new Scanner(System.in);

        String To_Be_Searched = To_Be_String.nextLine();

        System.out.println("\n \n \n");

        BufferedReader Search_Phone_reader;
        try {
            Search_Phone_reader = new BufferedReader(new FileReader (file_location));
            String new_line = Search_Phone_reader.readLine();
            while (new_line != null) {
                if (To_Be_Searched.equals(new_line)){
                    for (int i=0;i<=3;i++){
                        System.out.println(new_line);
                        new_line = Search_Phone_reader.readLine();
                    }
                    break;
                }
                new_line = Search_Phone_reader.readLine();
            }
            Search_Phone_reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

Заранее спасибо !!!

1 Ответ

0 голосов
/ 08 апреля 2019
package com.mycompany.io;

import java.io.BufferedReader;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;

public class Main {
  public static void main(String[] args) throws IOException {
    // For a small file
    Path path = Paths.get("The_txt.txt");
    String toBeSearched = "1234512345";
    List<String> lines = Files.readAllLines(path, StandardCharsets.UTF_8);
    // Better performance if i starts at 2 and i += 4
    for (int i = 0; i < lines.size(); i++) {
      if (lines.get(i).equals(toBeSearched)) {
        System.out.println(lines.get(i - 2));
        System.out.println(lines.get(i - 1));
        System.out.println(lines.get(i));
        System.out.println(lines.get(i + 1));
      }
    }
    // Else
    try (BufferedReader reader = Files.newBufferedReader(path, StandardCharsets.UTF_8)) {
      String line1;
      while ((line1 = reader.readLine()) != null) {
        String line2 = reader.readLine();
        String line3 = reader.readLine();
        if (line3.equals(toBeSearched)) {
          // Found
          System.out.println(line1);
          System.out.println(line2);
          System.out.println(line3);
          System.out.println(reader.readLine());
          break;
        } else {
          reader.readLine();
        }
      }
    }
  }
}
...