目录读取器Applet在Eclipse中加载,但不在浏览器中加载

时间:2012-08-26 15:19:19

标签: java security browser applet directory

我对编程很新,我只是编写了一个applet程序,它应该列出目录中的文件。 applet在eclipse中运行良好,但问题是当我尝试在GUI加载的浏览器中运行applet时,applet将不会像在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.");
    }
}
}

2 个答案:

答案 0 :(得分:0)

当然它在浏览器中不起作用

由于

当applet作为安全预防措施在浏览器中运行时,无法访问本地文件系统上的读取文件。

<强>解决方案

将您的程序作为桌面应用程序在桌面上运行NOT Applet 在浏览器中运行

答案 1 :(得分:0)

  1. 不受信任的小程序无法获取目录列表
  2. 受信任的applet无法获取服务器上的目录列表(仅限客户端)。
  3. 要让applet在服务器上获取文件列表,需要明确告知文件是什么。两种常见方式是:
    • 添加文件列表作为applet的参数。
    • 让applet访问服务器端功能以获取文件列表。
  4. 顺便说一句:

    }catch(Exception e){
    

    应该成为..

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

    请务必弄明白如何访问Java Console以查看输出。调试没有这些信息的小程序就像试图通过盲目调试来调试。