gpt4 book ai didi

java - 在java中进行套接字通信后文件读取不正确

转载 作者:行者123 更新时间:2023-11-29 08:59:29 25 4
gpt4 key购买 nike

我有这个文件,我通过套接字从服务器发送到客户端。但是,当我尝试读取客户端的前 159 个第一个字节时,它给出的结果比我要求服务器在原始文件中读取相同数量的结果要小,但是当我打印我在两边读取的内容的长度时它是一样的,但一个几乎是另一个的 2/3!可能是什么问题呢?我已经制作了 replaceAll("(\\r|\\n|\\s)","") 来去掉任何空格或制表,但仍然没有变化。有什么建议么?这是我编写文件的代码:

 FileOutputStream writer = new   FileOutputStream("Splits.txt"); 
String output= null;
StringBuilder sb2 = new StringBuilder();
for (int i =0; i < MainClass.NUM_OF_SPLITS ; i++){
StringBuilder sb1 = new StringBuilder();
for (String s : MainClass.allSplits.get(i).blocks)
{sb2.append(s);}
sb1.append(sb2);}
output = sb2.toString().replaceAll("(\\r|\\n|\\s)", "");
writer.write(output.getBytes(Charset.forName("ISO-8859-1")));
writer.close();

这里是我读取文件的地方:

  FileInputStream fis = new FileInputStream("Splits.txt");
InputStreamReader reader = new InputStreamReader(fis,Charset.forName("ISO-8859-1"));

for(int i = 0; i < splitsNum; i++) {
char[] buf = new char[159]; //param
int count = reader.read(buf);
String h=String.valueOf(buf, 0, count).replaceAll("(\\r|\\n||\\s)","");

System.out.println( h);
}

最佳答案

你需要循环直到你读完所有你需要的数据:

char[] buf = new char[159];
int charsRead = 0;
while (charsRead < buf.length) {
int count = reader.read(buf, charsRead, buf.length - charsRead);
if (count < 0) {
throw new EOFException();
}
charsRead += count;
}
// Right, now you know you've actually read 159 characters...

关于java - 在java中进行套接字通信后文件读取不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18341418/

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