我有一个C#程序,该程序通过网络套接字发送.zip文件。我的Java服务器侦听该端口,然后直接写入一个新文件,但是某些字符被替换为问号(?)。
例如,这只是我要传输的.zip文件中的一行:
¬ßÂÔìÑ·‹åÔ>ßÂÔÅ]tÅ™nÙ–-É’-Ë>ãñ} a [6ØžÍè$yÆYH> Z3-©qÏôÐ3cKÄqŒI°Ù°Ù·°`KX²,K6 \
这是Java服务器写入文件的内容(我在问号中加上了问号):
¬ßÂÔìÑ·‹åÔ>ßÂÔÅ]tÅ™nÙ–-É'-Ë>ãñ} a [6ØžÍè$yÆYH> Z3-©qÏôÐ3cKÄqŒI°Ù°Ï(?)·°KX²,K6 \
因此,此特殊情况的字符代码为144,并用63或问号符号代替。
我认为问题出在我的Java服务器中。
private String ReadMessage() {
StringBuilder message = new StringBuilder();
char recieved;
try {
recieved = (char)stream.read();
if(recieved != '$') {
do {
message.append(recieved);
recieved = (char)stream.read();
}while(recieved!='$');
}
return message.toString();
}catch(IOException e) {
e.printStackTrace();
return null;
}
private void InitWriter(){
projectwriter = new BufferedWriter(new FileWriter(new File("D:\\help\\" + this.participant) + ".zip"));
}
private void ProjectWrite(String valueOfMesseage) throws IOException{
projectwriter.append(valueOfMesseage);
}
我将$符号用作消息的结尾。
谢谢。