проблема чтения файла Java - PullRequest
0 голосов
/ 15 декабря 2011

В моем Java-приложении я должен прочитать один файл.Проблема, с которой я сталкиваюсь, после прочтения файла, результаты приходят как не читаемый формат.это означает, что отображаются некоторые символы ascii.Это означает, что ни одна из букв не читается.Как я могу заставить это отображать это?

 // Open the file that is the first
        // command line parameter

        FileInputStream fstream = new FileInputStream("c:\\hello.txt");
        // Get the object of DataInputStream
        DataInputStream in = new DataInputStream(fstream);
        BufferedReader br = new BufferedReader(new InputStreamReader(in));
        String strLine;
        // Read File Line By Line
        while ((strLine = br.readLine()) != null) {
            // Print the content on the console
            System.out.println(strLine);
        }
        // Close the input stream
        in.close();
    } catch (Exception e) {// Catch exception if any
        System.err.println("Error: " + e.getMessage());
    }

Ответы [ 5 ]

1 голос
/ 15 декабря 2011

Возможно, у вас ошибка кодирования. Конструктор, который вы используете для InputStreamReader, использует кодировку символов по умолчанию; если ваш файл содержит текст UTF-8 вне диапазона ASCII, вы получите мусор. Кроме того, вам не нужен DataInputStream, поскольку вы не читаете никаких объектов данных из потока. Попробуйте этот код:

FileInputStream fstream = null;
try {
    fstream = new FileInputStream("c:\\hello.txt");
    // Decode data using UTF-8
    BufferedReader br = new BufferedReader(new InputStreamReader(in, "UTF-8"));
    String strLine;
    // Read File Line By Line
    while ((strLine = br.readLine()) != null) {
        // Print the content on the console
        System.out.println(strLine);
    }
} catch (Exception e) {// Catch exception if any
    System.err.println("Error: " + e.getMessage());
} finally {
    if (fstream != null) {
        try { fstream.close(); }
        catch (IOException e) {
            // log failure to close file
        }
    }
}
0 голосов
/ 15 декабря 2011

Моя проблема решена. Я не знаю как. Я скопировал содержимое hello.txt в другой файл и запустил Java-программу. Я мог читать все письма. не знаю, в чем проблема в этом.

0 голосов
/ 15 декабря 2011

Вывод, который вы получаете, является значением ascii, поэтому вам нужно набрать приведение его в тип char или string перед печатью. Надеюсь, это поможет

0 голосов
/ 15 декабря 2011

Поскольку вы не знаете, в какой кодировке находится файл, используйте jchardet , чтобы определить кодировку, используемую файлом, а затем используйте эту кодировку для чтения файла, как уже предлагали другие.Это не на 100% надежно, но работает для вашего сценария.

Кроме того, использование DataInputStream не требуется.

0 голосов
/ 15 декабря 2011

Вы должны реализовать этот способ для обработки: -

BufferedReader br = new BufferedReader(new InputStreamReader(in, encodingformat));

.

encodingformat - изменить его в соответствии с типом проблемы кодирования, с которой вы столкнулись.

Примеры: UTF-8 , UTF-16 , ... скоро

См. Это Поддерживаемые кодировки в Java SE 6 для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...