【发布时间】:2021-10-21 02:25:10
【问题描述】:
我正在实施一个霍夫曼编码程序。我对整本书进行编码和解码,因此找到换行符非常重要,不幸的是,我忽略了这一点。目前,我使用一种方法将小书读入一个字符串,然后返回,见下文:
private String readFile(String filename) {
String curLine;
String toReturn = "";
try {
BufferedReader reader = new BufferedReader(new FileReader(filename));
try {
while ((curLine = reader.readLine()) != null) {
toReturn += curLine;
}
} catch (IOException e) {
System.out.println(e);
}
} catch (FileNotFoundException e) {
System.out.println(e);
}
return toReturn;
}
这适用于常规字符,但不适用于换行符之类的东西(我知道这些类型的“字符”有一个词,但我现在正在空白)。无论如何,我的问题是如何更改当前方法以也拾取 newLine 字符,或者我需要做一些完全不同的事情。我怀疑 readLine() 现在对我没有好处,但我想在这里检查一些输入。
我的程序中的其他所有东西都很好,但是没有考虑换行符的事实搞砸了我的整个霍夫曼树,我相信你明白从那里发生的事情。对于我可以做些什么来获取换行符的任何建议将不胜感激。谢谢!
【问题讨论】:
-
通常您需要面向字节的 IO,而不是面向字符的 IO。想想
FileInputStream,也许包裹在BufferedInputStream中。 -
不是“真实”(可打印或可显示)字符的一般“字符”(在 ASCII、EBCDIC、8859 或 Unicode 等代码中的真正字符 代码)是广泛称为'control' characters。形式上,与换行符和制表符(相对于传输、存储或其他东西)等表示相关的子集称为“格式效应器”,但您不会发现该术语使用得太多。
标签: java encoding ascii newline huffman-code