Erstellen Sie Zwischenordner, falls noch keiner existiert

Ich versuche einen Ordner zu erstellen, für jeden Benutzernamen ein Benutzer anmeldet. Derzeit habe ich

private String destination = "C:/Users/Richard/printing~subversion/fileupload/web/WEB-INF/uploaded/"; //main location for uploads
File theFile = new File(destination + username); //will create a sub folder for each user 

aber die File theFile bit nicht erstellen Sie einen neuen Ordner für den Benutzernamen. Wie kann ich dies tun ?

Habe ich versucht

private String destination;

public void File() 
{
    destination = "C:/Users/Richard/printing~subversion/fileupload/web/WEB-INF/uploaded/"; //main location for uploads
    File theFile = new File(destination + username); //will create a sub folder for each user (currently does not work, below hopefully is a solution) 
    theFile.mkdirs();
}

aber ich muss an dem Ziel später im Programm, wie soll ich das tun?

Dies ist mein ganzer code:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package richard.fileupload;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import java.io.File;
import org.primefaces.event.FileUploadEvent;

@ViewScoped
@ManagedBean(name = "fileUploadController")
public class FileUploadController {

    /*
     public void handleFileUpload(FileUploadEvent event) {
     System.out.println("called");
     FacesMessage msg = new FacesMessage("Succesful", event.getFile().getFileName() + " is uploaded.");
     FacesContext.getCurrentInstance().addMessage(null, msg);
     }
     }
     */
    private String username;
    private String destination;

    @PostConstruct
    public void init() {
        System.out.println("called get username");
        username = FacesContext.getCurrentInstance().getExternalContext().getRemoteUser();
    }

    public void File() {
    destination = "C:/Users/Richard/printing~subversion/fileupload/web/WEB-INF/uploaded/"; //main location for uploads
    File theFile = new File(destination + username); //will create a sub folder for each user (currently does not work, below hopefully is a solution) 
    theFile.mkdirs();
}

    public File getDirectory(String destination, String username) {
        System.out.println("called get directory");
        //currently not working, is not calling the username or destination 
        //set the user directory from the destinarion and the logged user name
        File directory = new File(destination, username);
        //check if the location exists
        if (!directory.exists()) {
            //let's try to create it
            try {
                directory.mkdir();
            } catch (SecurityException secEx) {
                //handle the exception
                secEx.printStackTrace(System.out);
                directory = null;
            }
        }
        return directory;
    }

    public void handleFileUpload(FileUploadEvent event) {
        System.out.println("called handle file");
        FacesMessage msg = new FacesMessage("Succesful", event.getFile().getFileName() + " is uploaded."); //Displays to user on the webpage
        FacesContext.getCurrentInstance().addMessage(null, msg);
        try {
            copyFile(event.getFile().getFileName(), event.getFile().getInputstream());
        } catch (IOException e) {
            //handle the exception
            e.printStackTrace();
        }
    }

    public void copyFile(String fileName, InputStream in) {
        try {


            //write the inputStream to a FileOutputStream
            OutputStream out = new FileOutputStream(new File(destination + fileName)); //cannot find path when adding username atm
            System.out.println("Called CopyFile"); //testing 
            System.out.println(destination + fileName);

            int read = 0;
            byte[] bytes = new byte[1024];

            while ((read = in.read(bytes)) != -1) {
                out.write(bytes, 0, read);
            }

            in.close();
            out.flush();
            out.close();
//make sure new file is created, (displays in glassfish server console not to end user)
            System.out.println("New file created!");//testing
        } catch (IOException e) {
            e.printStackTrace();

            FacesMessage error = new FacesMessage("The files were not uploaded!");
            FacesContext.getCurrentInstance().addMessage(null, error);
        }
    }
}

FINAL EDIT (Hoffentlich)

 public void copyFile(String fileName, InputStream in) {
        try {

            destination = "C:/Users/Richard/printing~subversion/fileupload/web/WEB-INF/uploaded/"; //main location for uploads
            File theFile = new File(destination + "/" + username); 
            theFile.mkdirs();//will create a sub folder for each user (currently does not work, below hopefully is a solution) (DOES NOW WORK)

            System.out.println("Completed File");
            //write the inputStream to a FileOutputStream
            OutputStream out = new FileOutputStream(new File(destination + fileName)); //cannot find path when adding username atm
            System.out.println("Called CopyFile"); //testing 
            System.out.println(destination + fileName);

            int read = 0;
            byte[] bytes = new byte[1024];

            while ((read = in.read(bytes)) != -1) {
                out.write(bytes, 0, read);
            }

            in.close();
            out.flush();
            out.close();
//make sure new file is created, (displays in glassfish server console not to end user)
            System.out.println("New file created!");//testing
        } catch (IOException e) {
            e.printStackTrace();

            FacesMessage error = new FacesMessage("The files were not uploaded!");
            FacesContext.getCurrentInstance().addMessage(null, error);
        }
    }
}

Nur wie kann ich drucken Sie das neue Ziel und dieses dann später wie es derzeit entsteht der neue Ordner aber nicht wählen, es zu benutzen

BEARBEITEN SIE GELÖST AUCH DIES :

    NewDestination = "C:/Users/Richard/printing~subversion/fileupload/web/WEB-INF/uploaded/" + username;

Hinzugefügt, die obigen code und jetzt funktioniert es

Kommentar zu dem Problem

InformationsquelleAutor der Frage user1924104 | 2013-02-02

Schreibe einen Kommentar