[英]huffman code encoder - Write to output file
我是一名计算机科学专业的学生——二年级。 霍夫曼代码要求我准备一个项目。 在项目期间,我陷入了故障,我正处于构建编码器的项目阶段。 根据霍夫曼代码,我得到一个文件 - 我必须以字节为单位对其进行编码。
我的问题是如何以字节为单位对文件进行编码——我做了什么:例如:我在文件中收到了“abca cadbara”这个词。 并在另一个文件中放入编码,但使用字符串而不是字节。
代码的一部分:
public static void writeOutputFile (String[] input_names, String[] output_names, Map<Character, String> codes)
{
FileInputStream input;
FileOutputStream output;
try
{
input = new FileInputStream(input_names[0]);
output = new FileOutputStream(output_names[0]);
for (int i = 0; i < (int) input.getChannel().size(); i++)
{
int x = input.read();
String codeOutput = codes.get((char) x);
//output.write(Integer.parseInt(codeOutput, 2));
for (int j = 0; j < codeOutput.length(); j++) {
output.write((int) codeOutput.charAt(j));
}
}
input.close();
output.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
如何使用字节而不是字符串? 谢谢您的帮助。
public static void writeOutputFile (String[] input_names,
String[] output_names,
Map<Character, String> codes) {
try (FileInputStream input = new FileInputStream(input_names[0]);
FileOutputStream output = new FileOutputStream(output_names[0])) {
StringBuilder toWrite = new StringBuilder();
for (int i = 0; i < (int) input.getChannel().size(); i++) {
toWrite.append(codes.get((char) input.read()));
}
output.write(toWrite.toString().getBytes());
} catch (IOException e) {
e.printStackTrace();
}
}
String.getBytes()
将字节写入文件。;
分离多个资源。StringBuilder
避免创建新字符串。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.