【发布时间】:2012-01-30 19:41:57
【问题描述】:
我正在编写一个程序,我正在使用另一家公司的库从他们的网站下载一些报告。我想在将它们写入文件之前解析这些报告,因为如果它们符合某些条件,我想忽略它们。
问题是,他们的方法称为 download() 返回一个 java.io.Reader。我唯一可用的方法是
int read(char[] cbuf);
打印这个返回的数组给了我无意义的字符。我希望能够识别我正在使用的字符集或将其转换为字节数组,但我不知道该怎么做。我试过了
//retrievedFile is my Reader object
char[] cbuf = new char[2048];
int numChars = retrievedFile.read(cbuf);
//I've tried other character sets, too
new String(cbuf).getBytes("UTF-8");
而且我不敢向更有用的读者投降,因为我无法确定它是否有效。有什么建议吗?
编辑
当我说它打印出“无意义的字符”时,我并不是说它看起来像 Jon Skeet 给出的示例。这真的很难描述,因为我现在不在我的机器上,但我认为这是一个编码问题。这些字符似乎具有与报告外观相似的凹痕和结构。我会在星期二回来后尽快尝试这些建议(我只是一名实习生,所以我没有费心设置远程帐户或其他任何东西)。
【问题讨论】:
-
你试过
BufferedReader吗?它没有理由不工作...... -
如果
System.out.print(cbuf[i])给你i=0,1,2..的垃圾,那是对方公司的lib有问题,或者你没有配置好。