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 に答える