Проблемы чтения .txt файла в Java - PullRequest
0 голосов
/ 12 февраля 2012

Я новичок в Java, ищу помощь в чтении файла.Вот код, который я использую.

source:

public void Escanear()
{

    Scanner sc=new Scanner(new File("inicio.txt"));
    while(sc.hasNext())
    {
        String token = sc.next();

        if (token.equals("Pared"))
        {
            int i=sc.nextInt();
            int j=sc.nextInt();

            _mat=new Pared[i][j];
        }

        else if(token.equals("Fantasma"))
        {
            int i=sc.nextInt();
            int j=sc.nextInt();

            _mat=new Fantasma[i][j];
        }
    }
}

Ошибка:

C:\Users\User\Documents\Jorge\Clases UNIMET\Trimestre 5\Estructuras de Datos\Proyecto Pacman\JuegoPacman.java:28: error: unreported exception FileNotFoundException; must be caught or declared to be thrown
        Scanner sc=new Scanner(new File("inicio.txt"));

Я импортировал java.io.FileNotFoundException, и яуже открылся файл .txt, который находится в той же папке, что и класс, который я компилирую ... Есть идеи, как это можно исправить?БЛАГОДАРНОСТЬ.

Ответы [ 3 ]

1 голос
/ 12 февраля 2012

Это error: unreported exception FileNotFoundException; must be caught or declared to be thrown ошибка компиляции . Это означает, что один из вызовов методов в вашем коде объявлен как исключение FileNotFoundException.

Он не связан с расположением файла, потому что ваша программа даже не запускается.

Конструктор сканера , который вы вызываете в строке 28, объявлен как потенциально вызывающий исключение FileNotFoundException.

Это означает, что вам нужно обработать это потенциально выброшенное исключение. Либо добавив throws FileNotFoundException в определение метода Escanear (которое не должно начинаться с заглавной буквы btw), либо окружив строку этим вызовом метода с помощью try-catch.

0 голосов
/ 12 февраля 2012

Вы говорите в комментарии:

Дело в том, что когда я даю ему полный путь, он показывает 9 недопустимых ошибок escape-символов

Это, вероятно,из-за пути в вашем исходном коде, например:

"foo\dir\myfile.txt"

Вы должны избежать обратной косой черты, чтобы сделать эту легальную Java:

"foo\\dir\\myfile.txt"

(Или использовать прямую косую черту - я думаю, что это работает нормальнодаже в Windows)

Java считает, что \d и \m предназначены как специальные символы, закодированные как escape-последовательности .

См. http://docs.oracle.com/javase/tutorial/java/data/characters.html длясписок допустимых escape-последовательностей, таких как \n для новой строки.

0 голосов
/ 12 февраля 2012

Вам нужно перехватить или выдать исключение FileNotFoundException, чтобы заставить его скомпилироваться.

Пример:

Scanner sc;
try {
  sc = new Scanner(new File("inicio.txt"));
} catch (FileNotFoundException e) {
  System.exit(1);
}
...