Java 跳过从PDF读取的字节
jabira-whosechild-lm.local 23:54:00%爪哇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 跳过从PDF读取的字节,java,process,command,bytearray,Java,Process,Command,Bytearray,jabira-whosechild-lm.local 23:54:00%爪哇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 为什么我看到读取的字符数有差异 并打印到控制台上 不是字符数相同,但单词数不同吗 我猜在你的c=in.read()和print((char)c)code中的某
不是字符数相同,但单词数不同吗 我猜在你的
c=in.read()
和print((char)c)
code中的某个地方有一些编码问题
您能将输出保存到另一个PDF文件并对它们进行二进制比较吗?如果它们是一样的,那真的很奇怪!如果不是,那么您可能会在差异中找到线索。方法
InputStream.read()
只读取一个字节
您的源代码行System.out.print((char)c)代码>是错误的。调用方法PrintStream.print(char c)
,该方法为一些非ASCII字符值写入两个字节
您需要调用一个总是写入一个字节值的方法。正确的方法是System.out.write(c)代码>
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();
}
}