上传端:
while ((length = fis.read(xml, 0, xml.length)) > 0) {
sumL += length;
// System.out.println("已传输:"+((sumL/l)*100)+"%");
os.write(xml, 0, length);
os.flush();
}
下载端:
File file = new File("F:/Cloud Disk/"+name);
FileOutputStream fos = new FileOutputStream(file);
while ((length = is.read(bt, 0, bt.length)) > 0) {
fos.write(bt, 0, length);
fos.flush();
}
通过read的返回值返回的长度,决定fos往文件里写入的长度,每执行过一次read,指针是会自动向后移动的,利用大小合适的字节数组bt,利用while循环一次次的读取是最为合适的,而不应该像我以前想象的用一个大字节数组一口气传过来,唉,毕竟naive,太年轻,少年郎~~
多总结,以后会进步的。目前的问题就在于如何解决filechooser。
话说我又发现可以在发送文件本体之前发送一行以\n结尾的文件名。
在接受端可以先readline,获取文件名,再依据文件名创建文件,传送文件实体。
我真是越来越6了。233333