【问题标题】:Bytes Read from PDF are skipped跳过从 PDF 读取的字节
【发布时间】:2011-11-18 03:15:51
【问题描述】:
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-whosechild-lm.local 23:54:00 % java BS|wc 384 2003 43885

jabira-whosechild-lm.local 23:54:05 % wc /usr/share/doc/bash/rbash.pdf 384 2153 43885 /usr/share/doc/bash/rbash.pdf

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

【问题讨论】:

    标签: java process command bytearray


    【解决方案1】:

    InputStream.read() 方法只读取一个字节。

    您的源代码行System.out.print((char)c); 错误。方法PrintStream.print(char c)被调用,该方法为一些非ASCII字符值写入两个字节。

    您需要调用一个始终写入一个字节值的方法。正确的方法是System.out.write(c);

    【讨论】:

      【解决方案2】:

      不是字数一样,字数不一样吗?

      我猜在您的 c=in.read()print((char)c) 代码中的某个地方出现了一些编码问题。

      您可以将输出保存到另一个 PDF 文件并对其进行二进制比较吗?如果它们是相同的,那真的很奇怪!如果不是,那么您可能会在差异中找到线索。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-04
        • 1970-01-01
        • 1970-01-01
        • 2020-06-14
        • 1970-01-01
        相关资源
        最近更新 更多