ソケットを介してサーバーからクライアントに送信するこのファイルがあります。ただし、クライアントで最初の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);
}