我收到了意想不到的文字

时间:2018-06-09 04:01:46

标签: java

我的text.txt文件只包含三行文字,这是我读取三行文字的代码

package textFile;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class app {
public static void main(String [] args) throws FileNotFoundException {
    String location = "/Users/li/Desktop/all files/text.rtf";
    File file = new File(location);
    Scanner text = new Scanner(file);
    while(text.hasNextLine()) {
        System.out.println(text.nextLine());
    }
    text.close();
}


}

我收到了这个

{\rtf1\ansi\ansicpg1252\cocoartf1561\cocoasubrtf400
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
{\*\expandedcolortbl;;}
\margl1440\margr1440\vieww10800\viewh8400\viewkind0
  \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\ 
tx7920\tx8640\pardirnatural\partightenfactor0

\f0\fs24 \cf0 Line 1 text\
Line 2 text\
Line 3 text}

2 个答案:

答案 0 :(得分:1)

这是因为您使用的是RTF文件。如果您使用文本文件,它将按预期产生3行。但是,您可以像这样进一步改进代码。

try (BufferedReader br = new BufferedReader(new FileReader("C:\\data\\sample.rtf"))) {
    String line;
    while ((line = br.readLine()) != null) {
        System.out.println(line);
    }
}

您可以尝试RTFEditorKit。它也支持图像和文本。

答案 1 :(得分:0)

您正在阅读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());

(Source)