Я пытаюсь выполнить печать из файла .rtf, но похоже, что инструкция my if нарушена. Кажется, что раскол не работает, потому что, если я поставлю состояние печати, выход просто выходит как первая строка печати, которая сообщает пользователю, какую песню они ищут, а затем тексты песен, которые неформатированы. Помимо этого, код просто прокручивается через цикл while. Похоже, что он не находит песню, когда попадает if(line.contains(song)){
. На данный момент я просто жестко определяю местоположение файла, но когда я его заработаю, я сделаю метод используемым пользователем.bufferedReader не печатает файл
Любая помощь будет оценена по достоинству.
public static void main(String[] args){
lyricsSearch("/Users/adam/Documents/Final/BlackDahliaMurder/", "miasma.rtf");
}
public static void lyricsSearch(String artist, String song){
try {
String stringSearch = song;
// Opens the album file as a buffered reader
BufferedReader bf = new
BufferedReader(new FileReader("/Users/adam/Documents/Final/BlackDahliaMurder/miasma.rtf"));
// Let the user know what we are searching for
System.out.println("Searching for " + song + "...");
// Loop through each line, parsing.
String line;
while ((line = bf.readLine()) != null){
System.out.println(line);
if (line.contains(song)){
String[] songInfo = line.split("\\|");
System.out.println(Arrays.toString(songInfo));
}
}
bf.close();
}
catch (IOException e) {
System.out.println("IO Error Occurred: " + e.toString());
}
}
Работает ли код, когда вы используете его в текстовом формате .txt, а не в файле .rtf? – denisw
Он работает лучше в том, что обратная косая черта исчезла, но если я оставлю код, как он выше, весь файл будет напечатан вместо того, чтобы останавливаться на |. Если я меняю его на if (line.toLowerCase(). Содержит (песня)) { 'он печатает только одну строку файла с именем песни на нем. Файл организован следующим образом: «Название песни: lyrics | другое название песни: lyrics |». – Adam