/ / czytanie danych wejściowych z pliku do momentu odczytania określonego słowa - Java, buforowany czytnik plików, lider plików

odczytanie danych wejściowych z pliku, aż do odczytania określonego słowa - java, bufferedreader, filereader

Piszę program Java, aby odczytać plik i wydrukować inną zmienną łańcuchową. która działa idealnie zgodnie z przeznaczeniem.

{
String key = "";
FileReader file = new FileReader("C:/Users/raju/Desktop/input.txt");
BufferedReader reader = new BufferedReader(file);
String line = reader.readLine();

while (line != null) {
key += line;
line = reader.readLine();
}

System.out.println(key); //this prints contents of .txt file
}

powoduje to wydrukowanie całego tekstu w pliku, ale chcę wydrukować tylko te wiersze, aż w pliku napotka słowo END.

przykład: jeśli plik input.txt zawiera następujący tekst: ten plik testowy KONIEC dodatkowo w

powinien drukować tylko: ten plik testowy

Odpowiedzi:

0 dla odpowiedzi № 1

Po prostu zrób prosty indexOf, aby zobaczyć, gdzie to jest ijeśli istnieje w linii. Jeśli instancja zostanie znaleziona, jedną z opcji byłoby użycie podłańcucha, aby odciąć wszystko aż do indeksu słowa kluczowego. Aby uzyskać nieco większą kontrolę, spróbuj użyć wyrażeń regularnych Java.

String key = "";
FileReader file = new FileReader("C:/Users/raju/Desktop/input.txt");
BufferedReader reader = new BufferedReader(file);
String line = reader.readLine();

while ((line = reader.readLine()) != null && line.indexOf("Keyword to look for") == -1)
key += line;


System.out.println(key);

-1 dla odpowiedzi № 2

Możesz to zrobić na wiele sposobów. jeden z nich używa indexOf metoda określenia indeksu początkowego „END” na wejściu, a następnie za pomocą subString metoda.

Aby uzyskać więcej informacji, przeczytaj dokumentację String calss. TUTAJ


-1 dla odpowiedzi nr 3

To zadziała dla twojego problemu.

    public static void main(String[] args) throws IOException {
String key = "";

FileReader file = new FileReader("/home/halil/khalil.txt");

BufferedReader reader = new BufferedReader(file);
String line = reader.readLine();

while (line != null) {
key += line;
line = reader.readLine();
} String output = "";
if(key.contains("END")) {
output = key.split("END")[0];
System.out.println(output);
}
}

-1 dla odpowiedzi № 4

Musisz zmienić logikę, aby sprawdzić, czy wiersz zawiera „END”.

Jeśli END nie zostanie znaleziony w linii, dodaj linię do łańcucha klucza w swoim programie

Jeśli tak, podziel tę linię na tablicę słów, czytaj ją, aż napotkasz słowo „KONIEC” i dołącz go do łańcucha kluczy. Rozważ użycie programu Stringbuilder jako klucza.

   while (line != null) {

line = reader.readLine();
if(!line.contains("END")){
key += line;
}else{

//Note that you can use split logic like below, or use java substring
String[] words = line.split("");
for(String s : words){
if(s.equals("END")){
return key;
}
key += s;
}
}
}