Wie kann mit einen Java Applet Dateien erstellen,verschieben und löschen?

unityself

Mitglied
Wie kann mit einen Java Applet Dateien erstellen,verschieben und löschen?
Ich habe diesen Code gefunden zum löschen von dateien ,wenn es geht könnt ihr ihn erweitern?


Java:
package com.dav;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.File;
import java.security.*;
import java.util.Vector;

public class FileApplet extends JApplet
{
    private String path;

    private JLabel lblPath;
    private JList lstFiles;
    private JButton btnDelete;

    public FileApplet()
    {
        //assign LayoutManager to panel
        JPanel contentPane = (JPanel)this.getContentPane();
        contentPane.setLayout(new BorderLayout(10, 10));

        //add Label for Path on Top
        lblPath = new JLabel();
        contentPane.add(lblPath, BorderLayout.NORTH);

        //add List with all files of path to center
        lstFiles = new JList();
        contentPane.add(new JScrollPane(lstFiles), BorderLayout.CENTER);

        btnDelete = new JButton("Löschen");
        //add listener to button -> delete files
        btnDelete.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {
                Object selectedValues[] = lstFiles.getSelectedValues();
                for (int i = 0; i < selectedValues.length; i++)
                {
                    deleteFile(path + selectedValues[i]);
                }

                lstFiles.setListData(getFileList());
            }
        });
        //add button to bottom
        contentPane.add(btnDelete, BorderLayout.SOUTH);

        setPath("C:/");
    }

    public void setPath(String newpath)
    {
        newpath = newpath.replace("\\", "/");

        if (!newpath.endsWith("/"))
            newpath += "/";

        this.path = newpath;
        lblPath.setText(this.path);

        AccessController.doPrivileged(new PrivilegedAction()
        {
            public Object run()
            {
                lstFiles.setListData(getFileList());
                return null;
            }
        });
    }

    //return a vector containing the filenames in path
    public Vector<String> getFileList()
    {
        Vector<String> fileNames = new Vector<String>();

        try
        {
            File dir = new File(path);
            File[] fileList = dir.listFiles();
            for (File f : fileList)
            {
                if (!f.isDirectory())
                    fileNames.add(f.getName());
            }
        }
        catch (Exception ex) {}

        return fileNames;
    }

    public boolean deleteFile(String name)
    {
        File f = new File(name);

        if (!f.exists() || !f.canWrite() || f.isDirectory())
            return false;

        return f.delete();
    }
}
 
Zuletzt bearbeitet:
Am besten gar nicht! 😉
Ein Applet ist für Web-Inhalte gedacht und kann deswegen über fast jeden Browser verbreitet werden. Deswegen unterliegt es strengen Sicherheitsmechanismen auf den einzelnen Clienten. Besondere Privillegien kann man sich mit signierten Applets holen, dazu gehören insbesondere Dateioperationen. Ich selbst gestatte keinem Applet unabhängig seiner Herkunft in meinen Dateien rumzuwühlen, bedeutet, dein Applet würde bei mir schon mal nicht laufen.
 
Ich auch... Verschieben und Erstellen gehören genau zu jenen privilllegierten Dateioperationen, die der Signatur des Applets bedürfen. Vorher kann das ein Applet nicht.
 
Dass mit den Signieren ist mir Klar.
Ich meine nur einen Code Wie zum Beispiel dieser:
Java:
JFileChooser d = new JFileChooser();
      d.setVisible(true);
      d.showOpenDialog(null);
      File Datei = d.getSelectedFile();
      String Dateiname = Datei.getName();
      String Dateipfad = Datei.getPath();
      int zeichen = 0;
      boolean ende = false;
      FileReader ein = null;
zum speichern eines inhaltes einer Datei in einen String.
 
wie bereits erwähnt : OHNE signierung unterliegt ein applet sehr strengen sicherheitseinschränkungen *sandbox*
innerhalb dieser sandbox sind viele dinge schlicht untersagt ... wie z.b. das aufbauen von socket-verbindungen zu anderen servern außer dem home-server *dem server von dem das applet geladen wurde* oder auch sämtliche datei-operationen auf der client platte ... auch das lesen wird bereits blockiert ...

wenn du also von einem applet aus auf die client-platte zu greifen willst musst du das applet signieren ...

gleiches gilt auch für unsignierte webstart apps ...

da es eh ein großes sicherheitsrisiko darstellt einem signierten applet zugriffe auf die platte oder andere funktionen wie den aufbau von verbindungen zu anderen servern zu gestatten solltest du das was du vor hast mit einer normalen desktop-app umsetzen
 

Neue Themen


Zurück
Oben