如何将文本文件的内容转换为单个变量? (java) [重复]

Posted

技术标签:

【中文标题】如何将文本文件的内容转换为单个变量? (java) [重复]【英文标题】:How do I convert the contents of a text file to a single variable? (java) [duplicate] 【发布时间】:2021-06-09 01:30:13 【问题描述】:

(文件包含一个段落)

下雨天预示着凉爽的微风和阵雨带来的好天气。它通过使气候凉爽宜人,使每个人都精神焕发,并从酷热中解脱出来。雨天让我们从通常炎热潮湿的气候中解脱出来。

我可以将整个段落保存到单个字符串变量(比如它称为“fullStory”)吗?

File story = new File("story.txt");
//Help read words in file
FileInputStream fileStr1 = new FileInputStream(story);
//Reads one character
InputStreamReader input_1 = new InputStreamReader(fileStr1);
//BufferedReader reads from the input stream
BufferedReader wordReader1 = new BufferedReader(input_1);

【问题讨论】:

当然,为什么不呢?但考虑使用StringBuilder 你能详细说明一下吗? @ScaryWombat 我刚刚完整回答了您的问题。你追求什么精雕细琢?也许应该详细说明你的问题?到目前为止你做了什么,你面临什么问题? 基本上我有一个段落保存在一个文本文件中。我想将它保存为字符串变量,以便我可以通过遍历每个字符来更改它,然后打印更改后的版本。我正在尝试在线查找代码,我需要将文本文件的所有内容转换为单个字符串。 @ScaryWombat 向我们展示您的代码,以便我们了解它有什么问题。 【参考方案1】:

这里读取文件的所有字节:

static public byte[] readBytes(final File pFile) throws FileNotFoundException, IOException 
    final long size = pFile.length();
    if (size > Integer.MAX_VALUE) throw new RuntimeException("File size is too big to be read into array!");

    final byte[] ret = new byte[(int) size];
    try (FileInputStream fis = new FileInputStream(pFile)) 
        fis.read(ret);
    

    return ret;

所以一旦你得到字节,你就可以把它转换成一个字符串:

byte[] data = readBytes(file);
String text = new String(text, StandardCharsets.UTF_8);

我需要提一下:这只能读取最大 2 GB 的文件,因为 2^31-1 是 int 可以寻址的最大字节数,因此 Java 数组可以保存数据。

但是拥有一个如此大小的文本文件是极不可能的,并且设计成问题,所以这是最快和最简单的方法。

从 Java 1.7 开始,还有 Files.readAllBytes(path),但也有同样的限制。

【讨论】:

非常感谢,但是像这样更简单的东西会起作用吗?字符串内容 = new String(Files.readAllBytes(Paths.get("story.txt"))); @JayC667 取决于您的 Java 版本。 1.7+,你的方法有效。创建字符串时请注意编码,如在我的示例中,我明确使用StandardCharsets.UTF_8 来明确文件可能具有其他编码。

以上是关于如何将文本文件的内容转换为单个变量? (java) [重复]的主要内容,如果未能解决你的问题,请参考以下文章

java如何把一个以文本存储的文件转化为二进制文件

如何从单个文本文件中同时打印字符串和整数?

如何将 Matlab 变量转换为带有标题的 .dat(文本)文件

Rails - 将多个 HTML 输入的内容转换为单个字符串

易语言 如何读取网页源文件的代码!

将文本内容转换为图像