0

私はプログラミングにかなり慣れていないので、ディレクトリ内のファイルを一覧表示するアプレット プログラムを作成しました。アプレットは Eclipse でうまく動作しますが、GUI が読み込まれるブラウザでアプレットを実行しようとすると、Eclipse のようにアプレットが応答しません。どんな助けでも大歓迎です。:)

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import javax.swing.JApplet;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class DirReader extends JApplet{

private JTextArea outputWindow;

private JTextField dirPath;
private String path;
private Font font;
private File folder;
private File[] listOfFiles;

public void init(){

    font = new Font("Times New Roman", Font.PLAIN, 16);

    dirPath = new JTextField("Enter Directory Path");
    dirPath.setFont(font);

    outputWindow = new JTextArea();
    outputWindow.setEditable(false);
    outputWindow.setFont(font);
    outputWindow.setBackground(Color.DARK_GRAY);
    outputWindow.setForeground(Color.ORANGE);           

    add(dirPath, BorderLayout.NORTH);
    add(outputWindow, BorderLayout.CENTER);

    setSize(400,750);

    dirPath.addActionListener(
        new ActionListener(){
            public void actionPerformed(ActionEvent event) {
                path = dirPath.getText();
                folder = new File(path);
                listOfFiles = folder.listFiles();
                System.out.println("Directory path set");
                ListOfFiles();
            }               
        }
    );

    System.out.println("Progam Intilized:");
}

public void ListOfFiles(){

    outputWindow.setText(null);

    try{
        for(int counter = 0 ; counter < listOfFiles.length ; counter++ ){               

            if(listOfFiles[counter].isFile()){  
                outputWindow.append("[FILE] " + listOfFiles[counter].getName()+ "\n");
                System.out.println("[FILE] " + listOfFiles[counter].getName());
            }
            else if(listOfFiles[counter].isDirectory()){
                outputWindow.append("[DIR] " + listOfFiles[counter].getName() + "\n");
                System.out.println("[DIR] " + listOfFiles[counter].getName());
            }                           
        }
    }catch(Exception e){
        System.out.println("Error: Directory could not be found.");

        outputWindow.setText("Error: Could not find directory.");
    }
}
}
4

2 に答える 2

0
  1. 信頼できないアプレットはディレクトリ リストを取得できません
  2. 信頼できるアプレットは、サーバー上のディレクトリ リストを取得できません (クライアントのみ)。
  3. アプレットがサーバー上のファイル リストを取得するには、ファイルが何であるかを明示的に伝える必要があります。一般的な方法は次の 2 つです。
    • アプレットのパラメータとしてファイル リストを追加します。
    • アプレットがサーバー側の機能にアクセスして、ファイル リストを取得します。

ところで:

}catch(Exception e){

なるはず..

}catch(Exception e){
    e.printStackTrace(); //...

出力を確認するには、 Java コンソールにアクセスする方法を確認してください。その情報なしでアプレットをデバッグすることは、目隠しをしてデバッグしようとするようなものです。

于 2012-08-26T23:27:40.660 に答える
0

もちろん、ブラウザでは動作しません

なぜなら

セキュリティ対策としてアプレットをブラウザで実行する場合、ローカル ファイル システム上のファイルを読み取るためのアクセス権はありません。

解決

プログラムをブラウザで実行するアプレットではなく、デスクトップで実行するデスクトップアプリケーションとして作成します

于 2012-08-26T16:06:00.150 に答える