跳过从PDF读取的字节

时间:2011-09-15 18:26:46

标签: java process command bytearray

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

     

为什么我会看到读取的字符数的差异   并打印到控制台

2 个答案:

答案 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);