Не удается прочитать текстовый файл в java (считается пустым файлом)

Я хотел бы сделать для себя приложение, которое сообщало бы мне, какие фильмы я смотрел или нет. Первая проблема. В прототипе у меня есть текстовый файл, в который я поместил названия фильмов. Но сканер, который я использую, просто считает файл пустым. Для меня это должно сработать, и я понятия не имею, где искать. Спасибо за вашу помощь. :)

public static void main(String[] args) throws FileNotFoundException, IOException {

    boolean trouve = false;
    System.out.println("Entrer le film a chercher");
    Scanner input = new Scanner(System.in);
    String word = input.nextLine();
    Scanner films = new Scanner(new File("C:/Films.txt"));

    while (films.hasNextLine() == true) {
        String line = films.nextLine();
        if (line.contains(word)) {
            trouve = true;
            System.out.println("ok");
        }
    }
    if (trouve) {
        System.out.println("Le film est présent");
    } else {
        System.out.println("Le film n'est pas présent");
    }
    System.out.println("Continuer ( entrer ) ou quitter");
    word = input.next();
}

Как выглядит ваш текстовый файл?

GBlodgett 10.08.2018 16:59

Я пробовал с самодельным текстовым файлом, и, похоже, он работает. С другой стороны, я хотел бы отметить, что вы сравниваете истину / ложь с истиной, чтобы получить истину / ложь: v (movies.hasNextLine () == true)

Worthless 10.08.2018 17:01

Убедитесь, что ваше имя файла и каталог верны при инициализации сканера.

Jonathan Buelow 10.08.2018 17:09

Я также проверил ваш метод, и он у меня работает. Может быть, попробуйте другой путь (например, «Рабочий стол») и переместите туда свой файл?

user3170251 10.08.2018 17:11

"movies.hasNextLine () == true" следует заменить на "movies.hasNextLine ()". Проблема не в этом, а в плохом стиле. Сравнивать боллеан с боллеаном бессмысленно.

PolygonParrot 10.08.2018 17:15
0
5
200
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я сделал это:

import java.util.*;
import java.lang.*;
import java.io.*;

class HaveFile {
    public static void main(String[] args) {
        try {
            boolean trouve = false;
            System.out.println("Entrer le film a chercher");
            Scanner input = new Scanner(System.in);
            String word = input.nextLine();
            Scanner films = new Scanner(new File(args[0]));

            while (films.hasNextLine() == true) {
                String line = films.nextLine();
                if (line.contains(word)) {
                    trouve = true;
                    System.out.println("ok");
                }
            }
            if (trouve) {
                System.out.println("Le film est présent");
            } else {
                System.out.println("Le film n'est pas présent");
            }
            System.out.println("Continuer ( entrer ) ou quitter");
            word = input.next();
        }
        catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
}

и он работал нормально. Я скомпилировал и запустил как:

java HaveFile HaveFile.java

и когда он запросил, я сказал «ввод», как это показано в тексте.

Я подозреваю, что ваша основная проблема в том, что вашего файла на самом деле не существует. Вы уверены, что C: /Films.txt там? Я использую Mac, а не Windows, поэтому я не могу комментировать эту часть, относящуюся к Windows.

Насколько вы уверены, что этот файл существует? И правильный ли формат файла на машине Windows C: / Filename или это C: \ Filename? Вы можете сделать File foo = new File ("..."), а затем if (foo.exists ()), чтобы что-то вам сказать. Вы можете использовать «C: /» в качестве файла и спросить, является ли это каталогом, а затем запросить содержимое.

Joseph Larson 10.08.2018 17:28

Ваше решение, вероятно, работает, но не на моем компьютере (так грустно). Я проверил имя файла и путь к нему. Проблема, я думаю, в том, что он не входит в цикл while.

Tonyto 10.08.2018 17:28

Вы там, где действительно правы, это "C: \", но проблема все еще сохраняется. Я спросил, существует ли файл и существует ли каталог.

Tonyto 10.08.2018 17:40

Если это; s C: \, тогда то, что вам действительно нужно в вашей строке, - это C: \\ Filename, потому что первый \ должен экранировать второй \. В противном случае C интерпретирует имя как C: \ F (независимо от того, что \ F может быть в строке C) ilename.

Joseph Larson 10.08.2018 17:52

Я удалил свой файл и создал новый, и теперь он, кажется, работает отлично.

Tonyto 10.08.2018 17:58

Большое спасибо за вашу помощь. Но если вы знаете, что произошло, хотелось бы знать :)

Tonyto 10.08.2018 17:58

Другие вопросы по теме