import java.io.*;
class BS{
public void pStr(){
try{
String command="cat /usr/share/doc/bash/rbash.pdf";
Process ps=Runtime.getRuntime().exec(command);
InputStream in = ps.getInputStream();
int c;
while((c=in.read())!=-1){
System.out.print((char)c);
}
}catch(Exception e){
e.printStackTrace();
}
}
public static void main(String args[]){
new BS().pStr();
}
}
jabira -hischild-lm.local 23:54:00%java BS | wc 384 2003 43885
jabira -hischild-lm.local 23:54:05%wc /usr/share/doc/bash/rbash.pdf 384 2153 43885 /usr/share/doc/bash/rbash.pdf
为什么我会看到读取的字符数的差异 并打印到控制台
答案 0 :(得分:0)
是不是字符数相同,但字数不同?
我猜你的c=in.read()
和print((char)c)
代码中某处存在一些编码问题。
您可以将输出保存到另一个PDF文件并进行二进制比较吗?如果他们是相同的那么这真的很奇怪!如果他们不是,那么你可能会发现差异的线索。
答案 1 :(得分:0)
方法InputStream.read()
只读取一个字节。
您的源代码行System.out.print((char)c);
错误。调用方法PrintStream.print(char c)
,此方法为某些非ASCII字符值写入两个字节。
您需要调用始终写入一个字节值的方法。正确的方法是System.out.write(c);
。