继续高分求问,承接“怎么能够让在两台机器上的对应文件夹里的文件能保持一致” 楼主想开发版本控制软件吗?牛!祝你早日做出中国的CVS 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 发送接收端都有以下几个 private InputStream Is; private OutputStream Os; private DataInputStream DIS; private PrintStream PS;先是从输入流中读取字符串readbuf = DIS.readLine();判断非空之后filename=readbuf;但是不明白为什么名字会是乱码?还有就是传输0字节的时候我在发送端的代码是//Debug使用调试的 1)当读0字节的文件时候,出现异常。 读之前先判断一下是否为 0 呀2)当文件名是中文时候,文件名也异常。 转换一下编码.new String(原str.getBytes(),"gb2312")几种编码自己试试, ------------------------------------------------------ 我们还年轻牛奶会有的奶牛也会有的 可天天在 csdn 混这些会有吗 ?? 1)当读0字节的文件时候,出现异常。 读之前先判断一下是否为 0 呀2)当文件名是中文时候,文件名也异常。 转换一下编码.new String(原str.getBytes(),"gb2312")几种编码自己试试, ------------------------------------------------------ 我们还年轻牛奶会有的奶牛也会有的 可天天在 csdn 混这些会有吗 ?? try { FileInputStream fis = new FileInputStream(directory + "//" + list[i]); Debug("begin Send file", false);//Debug使用调试的 while (true) { byte[] buf = new byte[4096]; int readln = fis.read(buf, 0, 4096); if (readln < 4096) { if (readln == -1)//这个是针对0字节文件的处理。 { readln = 0; } Os.write(buf, 0, readln);//不知道这样对0字节文件有什么后果 Debug("Send file buffer over", false);//Debug使用调试的 break; } Os.write(buf, 0, 4096); } fis.close();//写完一个文件就close() }在接收端,我的做法是 while (true) { //Debug("hello", false); byte[] readbuffer = new byte[4096]; try { readlen = Is.read(readbuffer); Debug("hello2" + Integer.toString(readlen), false);//Debug使用调试的 } catch (Exception e) { // Debug("error", false); try { DIS.close(); //关闭数据输入流 PS.close(); //关闭数据输出流 Is.close(); //关闭输入流 Os.close(); //关闭输出流 sock.close(); //关闭socket fos.close(); } catch (Exception ex1) { Debug(ex1.toString(), false);//Debug使用调试的 } return; } if (readlen == 0) { Debug("recv null", false);//Debug使用调试的 PS.println("GETFILESUCC"); Debug("send command succ", false);//Debug使用调试的 /*try { DIS.close(); //关闭数据输入流 PS.close(); //关闭数据输出流 Is.close(); //关闭输入流 Os.close(); //关闭输出流 sock.close(); //关闭socket fos.close(); } catch (Exception ex1) { }*/ try { fos.close(); } catch (Exception ex1) { } continue; } try { fos.write(readbuffer, 0, readlen); if (readlen < 4096) { /* fos.close(); DIS.close(); //关闭数据输入流 PS.close(); //关闭数据输出流 Is.close(); //关闭输入流 Os.close(); //关闭输出流 sock.close(); //关闭socket fos.close();*/ PS.println("GETFILESUCC"); fos.close(); break; } } catch (Exception ex2) { try { DIS.close(); //关闭数据输入流 PS.close(); //关闭数据输出流 Is.close(); //关闭输入流 Os.close(); //关闭输出流 sock.close(); //关闭socket fos.close(); } catch (Exception ex1) { } return; } } 贴出自己的烂代码,各位赏点脸,看看,指出错误,敬礼了。顺便对pleonheart说声,我不是做那个东西,我做的是一个很简单的东东,是项目里必须的。我还是学生,呵呵,不过快毕业了。很多东西得向大g大j们学习。 按照这个语句filename=new String(readbuf.getBytes(),"gb2312");得到filename是?????.txt(应该是 “修改密码.txt”)呵呵接下来的 fos = new FileOutputStream(FilePath + "\\" + filename);自然的出错。还请高手指点迷津 发送端循环部分的代码可作如下简化:byte[] buf = new byte[4096];int bytes = 0;while((bytes = fis.read(buf)) != -1) Os.write(buf, 0, bytes);接收端循环部分的代码可作如下简化:byte[] buf = new byte[4096];int bytes = 0;while((bytes = Is.read(buf)) != -1) fos.write(buf, 0, bytes); 关于JDK1.7调用ECC算法的使用 大家帮忙。。java core 求助关于正则表达式 批量ping如何实现 File length()问题 try catch finally 执行顺序? 困惑!请大家帮下忙! 我用java写了一个ftp下载的程序,为什么下载.jar时文件会变小? 看看这段程序,为什么这样的“继承”会出错? 哪个ZXing-2.1含有 com.google.zxing.client.j2se 急 请问java 怎么将一个gif图片画在另一个上 然后存为一个新的gif? 有门路的也可 各位大虾!急!帮忙!关于透明图片的问题,尤请beyond_xiruo兄!高分!
private InputStream Is;
private OutputStream Os;
private DataInputStream DIS;
private PrintStream PS;先是从输入流中读取字符串
readbuf = DIS.readLine();
判断非空之后
filename=readbuf;
但是不明白为什么名字会是乱码?还有就是传输0字节的时候
我在发送端的代码是//Debug使用调试的
读之前先判断一下是否为 0 呀
2)当文件名是中文时候,文件名也异常。
转换一下编码.
new String(原str.getBytes(),"gb2312")
几种编码自己试试, ------------------------------------------------------
我们还年轻牛奶会有的奶牛也会有的
可天天在 csdn 混这些会有吗 ??
读之前先判断一下是否为 0 呀
2)当文件名是中文时候,文件名也异常。
转换一下编码.
new String(原str.getBytes(),"gb2312")
几种编码自己试试, ------------------------------------------------------
我们还年轻牛奶会有的奶牛也会有的
可天天在 csdn 混这些会有吗 ??
try
{
FileInputStream fis = new FileInputStream(directory + "//" + list[i]);
Debug("begin Send file", false);//Debug使用调试的
while (true)
{
byte[] buf = new byte[4096];
int readln = fis.read(buf, 0, 4096);
if (readln < 4096)
{
if (readln == -1)//这个是针对0字节文件的处理。
{
readln = 0;
}
Os.write(buf, 0, readln);//不知道这样对0字节文件有什么后果
Debug("Send file buffer over", false);//Debug使用调试的
break;
}
Os.write(buf, 0, 4096);
}
fis.close();//写完一个文件就close()
}在接收端,我的做法是
while (true)
{
//Debug("hello", false);
byte[] readbuffer = new byte[4096];
try
{
readlen = Is.read(readbuffer);
Debug("hello2" + Integer.toString(readlen), false);//Debug使用调试的
}
catch (Exception e)
{
// Debug("error", false);
try
{
DIS.close(); //关闭数据输入流
PS.close(); //关闭数据输出流
Is.close(); //关闭输入流
Os.close(); //关闭输出流
sock.close(); //关闭socket
fos.close();
}
catch (Exception ex1)
{
Debug(ex1.toString(), false);//Debug使用调试的
}
return;
}
if (readlen == 0)
{
Debug("recv null", false);//Debug使用调试的
PS.println("GETFILESUCC");
Debug("send command succ", false);//Debug使用调试的
/*try
{
DIS.close(); //关闭数据输入流
PS.close(); //关闭数据输出流
Is.close(); //关闭输入流
Os.close(); //关闭输出流
sock.close(); //关闭socket
fos.close();
}
catch (Exception ex1)
{
}*/
try
{
fos.close();
}
catch (Exception ex1)
{
} continue;
}
try
{
fos.write(readbuffer, 0, readlen);
if (readlen < 4096)
{
/* fos.close();
DIS.close(); //关闭数据输入流
PS.close(); //关闭数据输出流
Is.close(); //关闭输入流
Os.close(); //关闭输出流
sock.close(); //关闭socket
fos.close();*/
PS.println("GETFILESUCC");
fos.close();
break; }
}
catch (Exception ex2)
{
try
{
DIS.close(); //关闭数据输入流
PS.close(); //关闭数据输出流
Is.close(); //关闭输入流
Os.close(); //关闭输出流
sock.close(); //关闭socket
fos.close();
}
catch (Exception ex1)
{
}
return;
}
}
敬礼了。
顺便对pleonheart说声,
我不是做那个东西,
我做的是一个很简单的东东,
是项目里必须的。
我还是学生,呵呵,不过快毕业了。
很多东西得向大g大j们学习。
filename=new String(readbuf.getBytes(),"gb2312");
得到filename是?????.txt(应该是 “修改密码.txt”)
呵呵接下来的
fos = new FileOutputStream(FilePath + "\\" + filename);
自然的出错。还请高手指点迷津
byte[] buf = new byte[4096];
int bytes = 0;
while((bytes = fis.read(buf)) != -1)
Os.write(buf, 0, bytes);接收端循环部分的代码可作如下简化:
byte[] buf = new byte[4096];
int bytes = 0;
while((bytes = Is.read(buf)) != -1)
fos.write(buf, 0, bytes);