我的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}
答案 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());