2014-10-25 3 views
-1

Я читаю текстовый файл с помощью java Scanner.Java-сканер чтения мусора

try { 
      while(sc.hasNextLine()) { 
       //Read input from file 
       inputLine = sc.nextLine().toUpperCase(); 
       System.out.println(inputLine); 
} 

Вышеприведенное дает ниже вывод, в то время как в текстовом файле содержится только «aabbcc». Как избежать сканера от сканирования мусора? Спасибо.

{\RTF1\ANSI\ANSICPG1252\COCOARTF1265\COCOASUBRTF210 
{\FONTTBL\F0\FSWISS\FCHARSET0 HELVETICA;} 
{\COLORTBL;\RED255\GREEN255\BLUE255;} 
\PAPERW11900\PAPERH16840\MARGL1440\MARGR1440\VIEWW10800\VIEWH8400\VIEWKIND0 
\PARD\TX566\TX1133\TX1700\TX2267\TX2834\TX3401\TX3968\TX4535\TX5102\TX5669\TX6236\TX6803\PARDIRNATURAL 

\F0\FS24 \CF0 AABBCC} 
+0

Действительно ли ваш файл заканчивается на .txt? –

+1

Это не похоже, что вы читаете текстовый файл. Что вы видите, когда вы показываете это в наивном текстовом редакторе (или, на машине posix, если вы катаетесь на нем)? –

+1

Вам нужно сохранить документ как обычный текстовый файл не как файл * .rtf. – Martin

ответ

4

Вы читаете документ RTF. Если вы хотите прочитать только текст, вы можете попробовать прочитать его в массив байтов и разбор текста с помощью swings rtfeditorkit.

Path path = Paths.get("path/to/file"); 
byte[] data = Files.readAllBytes(path); 

RTFEditorKit rtfParser = new RTFEditorKit(); 
Document document = rtfParser.createDefaultDocument(); 
rtfParser.read(new ByteArrayInputStream(data), document, 0); 
String text = document.getText(0, document.getLength()); 
2

Это было решено путем установки параметров TextEdit, формата «Обычный текст» и воссозданного входного файла. Управляется, чтобы получить выход без мусора.

Источник: File input in Java for Mac

+0

Если бы я мог это сделать снова, я бы это сделал. Просто потратил, как 3 часа, пытаясь выяснить, как решить эту проблему – tin

1

Проблема заключается не в том, что сканер читает в мусоре. Это не обычный текст. По внешнему виду ваш файл на самом деле является «богатым текстом», и этот мусор содержит информацию о форматировании. Я смог произвести подобный вывод, сохранив файл .rtf, используя MS WordPad.

Смежные вопросы