我有一个客户端服务器程序,必须将文件的内容作为字符串发送,并且无法决定如何结束包含BufferedReader.read方法的while循环。我的代码为:
while((c = in.read()) != -1){
fw.write((char)c);
System.out.print((char)c);
}
但是因为它使用套接字,所以在套接字关闭之前它永远不会达到-1。我无法弄清楚while循环的结束条款。有什么特别的人物吗?
跟着:
while((line = in.readLine()) != null && !line.equals(BasicProtocol.SENDING_FILE_DONE))
其中SENDING_FILE_DONE是添加到流末尾的String。这不是一个好方法,但必须采用这种方式(我相信),当数据必须是String时。
答案 0 :(得分:1)
我有一个客户端服务器程序,必须将文件的内容作为字符串
发送
为什么呢?馊主意。它应该以字节形式发送。否则,您将面临数据损坏的风险。
我无法决定如何结束包含
BufferedReader.read()
方法的while循环
BufferedReader
,你应该使用BufferedInputStream
,以避免假设文件包含文本。答案 1 :(得分:-1)
如果您使用的是BufferedReader,您可以一次尝试读取整行...
String line;
while((line = in.readLine()) != null) {
// your code here
}