소켓을 통해 서버에서 클라이언트로 보내는이 파일이 있습니다. 그러나 클라이언트에서 처음 159 바이트를 읽으려고하면 원래 파일에서 동일한 양을 읽도록 서버에 요청했을 때보 다 작은 결과를 얻을 수 있지만 양면에서 읽은 길이를 인쇄하면 결과는 작아집니다 그것은 동일하지만 하나는 다른 것의 거의 2/3입니다! 무엇이 문제 일 수 있습니까? 이미 replaceAll("(\\r|\\n|\\s)","")
을 만들었으므로 공간이나 도표는 없지만 변경 사항은 없습니다. 제안 사항이 있으십니까? 내가 파일을 읽을 여기Java에서 소켓 통신 후 파일 읽기가 올바르지 않습니다.
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);
}
왜 데이터 전체가'read'에 대한 한 번의 호출로 읽힐 것이라고 가정하고 있습니까? 파일 자체가 올바르게 전송되었는지 어떤 검증을 수행 했습니까? –
클라이언트 쪽에서 클라이언트의 파일을 "수동으로"열 수 있으며 내용에 초기 파일이 일치하는 것을 볼 수 있습니다. – rima101
파일을 수동으로 열지 마십시오. 파일 크기를 확인하고 이상적으로 두 파일 모두에서 MD5 해시를 수행하십시오. –