gpt4 book ai didi

java - InputStream read(byte[] b, int off, int len) - 删除文件的其余部分?

转载 作者:行者123 更新时间:2023-12-01 07:41:07 25 4
gpt4 key购买 nike

这是我今天早上在这里提出的问题的扩展,所以如果您认为您以前看过此代码,请不要忽视:D

for (String name : filenames) {
FileInputStream in = new FileInputStream(input.readUTF());
int byteCounter = 0;
int rowCounter = 0;
long bufferCounter = 0;
byte[] b = new byte[10];
int read;

//in.skip(10);
//while((read = in.read()) != -1){
while((read = in.read(b, 0, 10)) != -1){
byteCounter ++;
if (byteCounter != 1000){
if (rowCounter == 1){
System.out.println("\n");
rowCounter = 0;
}
System.out.print(org.apache.commons.codec.binary.Hex.encodeHexString(b));
bufferCounter ++;
rowCounter ++;
}else{
byteCounter = 0;
try{
Thread.sleep(200);
}catch(InterruptedException e) {
}
}
}
System.out.println("\n"+"================"+"\n");
}

您好,经过几个小时的努力让代码恢复原样,我几乎已经完成了我正在处理的特定组件。该程序接受指定的文件,并应该将该文件的前 10 个字节转换为十六进制。一旦它获取了该文件的前 10 个字节,它应该停止并移动到下一个指定的文件。目前,它会将整个文件分成多个 10 字节的“ block ”,然后将其打印出来。换句话说,它在我认为 read(byte[] b, int off, int len) 所做的前 10 个字节之后并没有停止

示例输出:

74656173676173677361

67616773617367616773

61676173617367616773

但它应该产生

74656173676173677361

任何建议我都会非常感激,我确实是这么想的:)

最佳答案

放弃 while 循环怎么样?正如我在your first question中已经告诉过你的那样,如果您确定始终至少有 10 个字节,则可以采用以下方法:

byte[] b = new byte[10];
new DataInputStream(new FileInputStream(input.readUTF())).readFully(b);

否则就去做这样的事情:

byte[] b = new byte[10];
int count = 0;
while (count < b.length) {
int n = in.read(b, count, b.length-count);
if (n==-1) break;
count += n;
}

关于java - InputStream read(byte[] b, int off, int len) - 删除文件的其余部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4768257/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com