我的压缩类工作不正常。当我试图压缩包含句子""的简单文件时,压缩和未压缩返回其他内容。这是我的缩减代码:
public static void inflate(String arg) throws Exception {
try {
FileInputStream fin = new FileInputStream(arg);
InflaterInputStream in = new InflaterInputStream(fin);
FileOutputStream fout = new FileOutputStream("def.txt");
int i;
while ((i = in.read()) != -1) {
fout.write((byte) i);
fout.flush();
}
fin.close();
fout.close();
in.close();
} catch (Exception e) {
System.out.println(e);
}
new File(arg).delete();
new File("def.txt").renameTo(new File(arg));
}
public static void deflate(String arg) throws Exception {
try {
FileInputStream fin = new FileInputStream(arg);
FileOutputStream fout = new FileOutputStream("def.txt");
DeflaterOutputStream out = new DeflaterOutputStream(fout);
int i;
while ((i = fin.read()) != -1) {
out.write((byte) i);
out.flush();
}
fin.close();
out.close();
} catch (Exception e) {
System.out.println(e);
}
new File(arg).delete();
new File("def.txt").renameTo(new File(arg));
}
我用
来称呼它public static void main(String[] args) {
try {
Main.deflate(args[0]);
Main.inflate(args[0]);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
那么如何修复我的代码呢?我认为问题不在于缩小代码。
答案 0 :(得分:0)
您的代码似乎按预期工作。
在包含单词“'”的文本文件上运行它返回一个相同的文件。 要确认输出是否相同,请尝试编辑以下行:
Test.inflate("def.txt");
位于您的主要功能中
FileOutputStream fout = new FileOutputStream("output.txt");
来自你的膨胀功能。
然后在你的deflate()和inflate()函数中注释掉以下几行
//new File(arg).delete();
//new File("def.txt").renameTo(new File(arg));
程序现在将输入一个输入文件,我使用了 input.txt ,其中包含“' something'根据您的示例,创建一个缩小的文件 def.txt 和一个 output.txt 文件,该文件是通过膨胀 def.txt 创建的。 / p>
输出文件应与输入文件完全匹配,而缩小的文件应该不同。如果没有,则必须提供有关该程序缺失的更多信息。