当前位置: 代码迷 >> J2SE >> JAVA Socket 文件下载文件夹无法递归,该怎么处理
  详细解决方案

JAVA Socket 文件下载文件夹无法递归,该怎么处理

热度:249   发布时间:2016-04-24 02:27:01.0
JAVA Socket 文件下载文件夹无法递归
大家看看 我想要一个Socket下载文件夹的需求,写好后只能递归两个文件夹。请大家看看这是怎么回事?
代码如下:
客户端:
Java code
import java.io.DataInputStream;import java.io.FileOutputStream;import java.net.Socket;import java.io.File;public class FileDowProjClient extends Thread {    private Socket socket = null;    DataInputStream getMessageStream = null;    byte b[] = new byte[102400];    int fileNum;    public FileDowProjClient()    {        try        {            socket = new Socket("127.0.0.1",9999);            }        catch(Exception ex)        {            System.out.println("远程服务连接失败:");            ex.printStackTrace();            return;        }    }        int n;    File f=null;    public boolean getMessageStream() throws Exception {        try {                  DataInputStream in = new DataInputStream(socket.getInputStream());                 String myFile = in.readUTF();                 String tempFile = "D"+myFile.substring(myFile.indexOf(":"));                 String strDiretory = "";                 int tempIndex = 0;                 while((tempIndex = tempFile.indexOf("\\")) != -1){                  strDiretory += tempFile.substring(0,tempIndex+1);                  tempFile = tempFile.substring(tempIndex+1);                 }                 System.out.println(strDiretory+" ,tempFile is :"+tempFile);                 File d = new File(strDiretory);                 d.mkdirs();                                  File f = new File(strDiretory+tempFile);                 f.createNewFile();                                  FileOutputStream fos = new FileOutputStream(f);                 int ch = 0;                 while ((ch = in.read()) != -1) {                  System.out.print((char) ch);                  fos.write(ch);                 }                 fos.close();        } catch (Exception e) {            e.printStackTrace();            throw e;        }         return false;    }       public static void main(String[] args) {     FileDowProjClient fp=new FileDowProjClient();     try {        fp.getMessageStream();    } catch (Exception e) {        // TODO Auto-generated catch block        e.printStackTrace();    } }}


服务端:
Java code
import java.io.BufferedInputStream;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.net.InetAddress;import java.net.ServerSocket;import java.net.Socket;public class FileDowProjServer  implements Runnable {    public static FileDowProjServer fileDowProjServer = null;     public boolean running = false;      DataInputStream fis = null;      DataOutputStream out=null;         protected FileDowProjServer() {           madetree(new File("C:\\src"));          start();        }     public static FileDowProjServer getInstance() {           if (fileDowProjServer == null) {               fileDowProjServer = new FileDowProjServer();                       }           return fileDowProjServer;         }     public void start() {           if (!running) {            running = true;            (new Thread(this)).start();           }     }      String[]   filePathArray=new String[1000] ;     int fileNum;    public void run() {                   System.out.println("服务器监听中...");              ServerSocket server = null;           Socket you = null;           try {            server = new ServerSocket(9999);           } catch (IOException ex) {            System.out.println("建里服务器:" + ex.getMessage());           }           while (true) {                        try {             you = server.accept();            } catch (IOException ee) {             System.out.println("正在等待客户:" + ee.getMessage());            }            if (you != null){             new DownServer_Thread(you).start();            }else{             continue;            }            }         }          void madetree(File dothis) {          File[] farray = dothis.listFiles();          for (int i = 0; i < farray.length; i++) {           if (farray[i].isFile()){            filePathArray[fileNum++] = farray[i].getAbsolutePath();           }else if(farray[i].isDirectory())            {               madetree(farray[i]);            }          }                 }          class DownServer_Thread extends Thread {    Socket socket = null;     DataInputStream in = null;     String filename = null;     DownServer_Thread(Socket c) {       socket = c;       try {        in = new DataInputStream(socket.getInputStream());             } catch (IOException ex) {        ex.printStackTrace();       }     }               public void run() {                   while (true) {               try {                                                                   for(int k = 0;k < filePathArray.length;k++){                                                if(filePathArray[k]!=null)                         {                                                   out = new DataOutputStream(socket.getOutputStream());                             out.writeUTF(filePathArray[k]);                             FileInputStream fis = new FileInputStream(filePathArray[k]);                             int ch = 0;                             while ((ch = fis.read()) != -1) {                              out.write(ch);                             }                             fis.close();                          }                       }                      out.close();               } catch (FileNotFoundException e) {                // TODO Auto-generated catch block                e.printStackTrace();            } catch (IOException e) {                // TODO Auto-generated catch block                e.printStackTrace();            }          }     }}public static void main(String[] args) {    FileDowProjServer f=new FileDowProjServer();        //f.start();        }}
  相关解决方案