标签:tcp
public class TCPServerFs implements Runnable{
private Socket s;
public TCPServerFs(Socket s) {
super();
this.s = s;
}
@Override
public void run() {
// TODO Auto-generated method stub
//读取文件名
try {
InputStream in = s.getInputStream();
//读取上传的文件名
byte[] buf = new byte[1024];
int len = in.read(buf);
String FileName = new String(buf,0,len);
System.out.println("上传的文件是:"+FileName);
File uf = new File("F:/0123/MyServer",FileName);
//FileOutputStream fos = new FileOutputStream(uf);读取流关联了 文件对象 当该文件不存在时 会自动创建
int count =1;
//判断该文件是否已存在
while (uf.exists()) {
System.out.println(uf.exists());
int index = FileName.lastIndexOf(".");
String name = FileName.substring(0, index);
String type = FileName.substring(index+1);
uf = new File("F:\\0123\\MyServer",name+"("+(count++)+")."+type);
}
System.out.println("文件在服务端的存储名:"+uf.getName());
FileOutputStream fos = new FileOutputStream(uf);
//读取 文件数据
while ((len = in.read(buf))!=-1) {
fos.write(buf,0,len);
}
PrintStream out = new PrintStream(s.getOutputStream(),true);
out.println("文件shang传成功");
System.out.println("文件来自:"+s.getInetAddress().getHostName());
} catch (Exception e) {
e.getMessage();
}
}
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
ServerSocket ss = new ServerSocket(10713);
while (true) {
System.out.println("服务端已开启,等待连接");
Socket s = ss.accept();
new Thread(new TCPServerFs(s)).start();
}
}
}当 创建文件对象的时候 并没有创建文件实例 所以file.exists()返回false 但是
//FileOutputStream fos = new FileOutputStream(uf);读取流关联了 文件对象 当该文件不存在时 会自动创建 所以file.exists()返回true 永远无法完整上传的第一个文件 服务端第一个文件的大小为0
本文出自 “要么拼命,要么滚回去!” 博客,请务必保留此出处http://jiangzuun2014.blog.51cto.com/8732469/1530944
TCP上传文件 遇到发现一些问题,布布扣,bubuko.com
标签:tcp
原文地址:http://jiangzuun2014.blog.51cto.com/8732469/1530944