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
TCP上传文件 遇到发现一些问题,布布扣,bubuko.com
时间: 2024-12-28 00:18:47