我试图实现一个从.txt文件中获取字符的Huffman算法。 txt文件包含一段文本。现在当我像这样运行程序时
java HuffmanCode large.txt
它产生输出,但它评估的是文件的名称," large.txt",而不是文件large.txt中的文本。我如何让它来阅读内容?谢谢你的帮助。
public static void main(String[] args) throws IOException {
String inputFileName = args[0];
FileReader reader = new FileReader(inputFileName);
Scanner in = new Scanner(reader);
int[] charFreqs = new int[256];
// read each character and record the frequencies
for (char c : inputFileName.toCharArray())
charFreqs[c]++;
// build tree
HuffmanTree tree = buildTree(charFreqs);
// print out results
System.out.println("SYMBOL\tWEIGHT\tHUFFMAN CODE");
printCodes(tree, new StringBuffer());
}
}
答案 0 :(得分:1)
你真的很接近 - 你只是在inputFileName.toCharArray()
上进行迭代,它会给你文件名中的字符。您需要从in
变量中读取字符(这将为您提供文件内容),例如:
while (in.hasNextLine())
{
char[] line = in.nextLine().toCharArray();
for (char c : line)
charFreqs[c]++;
}
请注意,这可能会丢弃文件中的任何换行符,因此如果要计算它们,则可能需要手动执行。或者切换到从您已经拥有的char[]
读取原始FileReader
,这可能是比上面更好的方法(您想要原始字符数据,而不是“文本”数据,这是{{1}操作)。