如何将文本文件的内容转换为单个变量? (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) [重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何将 Matlab 变量转换为带有标题的 .dat(文本)文件