Java 我收到了意想不到的短信

Java 我收到了意想不到的短信,java,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 =

我的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}

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

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

你可以试试这个。它还支持图像和文本。

您正在阅读RTF文档。如果只想读取文本,可以尝试将其读入字节数组,并使用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());

你能告诉我们文本文件的内容吗?可能的副本是读一个RFT文件而不是TXT文件都是一样的吗?如果这是你从一个三行文本的富文本格式(RTF)文件中得到的,那么你就认为自己是幸运的。在MS Word中打开新文档并输入Hello World,然后将文档另存为.rtf。现在在记事本中查看文件。看看你是否能在没有搜索机制的混乱中找到Hello World。是的……沃尔多,大约是下山的三分之一。请接受对你解决问题最有帮助的答案。它有助于未来的读者。如果答案没有帮助,请在下面留下评论。因此海报可以相应地更新它们。