0

我正在设计一个文件共享应用程序,在应用程序客户端级别,我希望客户端能够看到服务器上所有可用的文件,你能给我一个方法,我可以使用 GUI 组件列出它们吗?我正在使用套接字编程这是我的服务器代码

服务器端

import java.io.*;
import java.net.*;



class TCPServer {

    public static void listfile(){

    File folder = new File("c:/");
    File[] listOfFiles = folder.listFiles();

    for (int i = 0; i < listOfFiles.length; i++) {
      if (listOfFiles[i].isFile()) {
        System.out.println("File " + listOfFiles[i].getName());
      } else if (listOfFiles[i].isDirectory()) {
        System.out.println("Directory " + listOfFiles[i].getName());
      }
    }
  }


    public static void main(String args[]) {

        listfile();

        while (true) {
            ServerSocket welcomeSocket = null;
            Socket connectionSocket = null;
            BufferedOutputStream outToClient = null;

            try {
                welcomeSocket = new ServerSocket(3248);
                connectionSocket = welcomeSocket.accept();
                outToClient = new BufferedOutputStream(connectionSocket.getOutputStream());
            } catch (IOException ex) {
                // Do exception handling
            }


            if (outToClient != null) {

                String FileName = "carexception.java";

                File myFile = new File("C:\\"+FileName);

                byte[] mybytearray = new byte[(int) myFile.length()];

                FileInputStream fis = null;

                try {
                    fis = new FileInputStream(myFile);
                } catch (FileNotFoundException ex) {
                    // Do exception handling
                }
                BufferedInputStream bis = new BufferedInputStream(fis);

                try {
                    bis.read(mybytearray, 0, mybytearray.length);
                    outToClient.write(mybytearray, 0, mybytearray.length);
                    outToClient.flush();
                    outToClient.close();
                    connectionSocket.close();

                    // File sent, exit the main method
                    return;
                } catch (IOException ex) {
                    // Do exception handling
                }
            }

        }
    }
}

客户端

   import java.io.*;
    import java.net.*;
    import java.util.*;

    class TCPClient {

        public static void main(String args[]) {
            Scanner s = new Scanner(System.in);
            byte[] aByte = new byte[1];
            int bytesRead;

            Socket clientSocket = null;
            InputStream is = null;

            try {
                clientSocket = new Socket("127.0.0.1", 3248);
                is = clientSocket.getInputStream();
            } catch (IOException ex) {
                // Do exception handling
            }
            ByteArrayOutputStream baos = new ByteArrayOutputStream();

            if (is != null) {

                FileOutputStream fos = null;
                BufferedOutputStream bos = null;
                try {
                    fos = new FileOutputStream("E:\\sss.java");
                    bos = new BufferedOutputStream(fos);
                    bytesRead = is.read(aByte, 0, aByte.length);

                    do {
                            baos.write(aByte);
                            bytesRead = is.read(aByte);
                    } while (bytesRead != -1);

                    bos.write(baos.toByteArray());
                    bos.flush();
                    bos.close();
                    clientSocket.close();
                } catch (IOException ex) {
                    // Do exception handling
                }
            }
        }
    }

我写了这段代码来投影我在服务器上可用的文件

    public static void listfile(){

    File folder = new File("c:/");
    File[] listOfFiles = folder.listFiles();

    for (int i = 0; i < listOfFiles.length; i++) {
      if (listOfFiles[i].isFile()) {
        System.out.println("File " + listOfFiles[i].getName());
      } else if (listOfFiles[i].isDirectory()) {
        System.out.println("Directory " + listOfFiles[i].getName());
      }
    }
  }

我如何将它们投影到 J 树或 Jpanel 中?

4

1 回答 1

1

做这个

  1. 将选定文件夹中的可用文件列表发送到客户端并使用 JTable 或JList列出这些文件
  2. 选择文件时,如果选择的文件是文件夹,则获取该文件夹的文件列表并再次显示
  3. 如果选择的文件是文件,在客户端提示保存点位置,然后保存。

这是一个使用 swing 的TCP 聊天程序的示例,您可以修改它以进行文件共享。

于 2013-01-07T00:10:27.953 回答