我用FCKeditor 上传了文件 图片等东西, 怎么样可以在后台管理实现文件管理呢,比如删除某个文件,先要得到完整路径名

解决方案 »

  1.   

    package file;import java.io.BufferedInputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.FileWriter;
    import java.io.PrintWriter;/**
     * java.io.file工具
     * 
     * @author xiaodong.lee
     */
    public class FileUtils { /**
     * 新建目录
     * 
     * @param folderPath
     * @author xiaodong.lee 2009-8-23
     */
    public void creatFolder(String folderPath) {
    try { File file = new File(folderPath);
    if (!file.exists()) {
    file.mkdirs();
    }
    } catch (Exception e) {
    System.out.println("create folder failed!");
    e.printStackTrace();
    }
    } /**
     * 新建文件
     * 
     * @param filePath
     * @param fileContext
     * @author xiaodong.lee 2009-8-23
     */
    public void creatFile(String filePath, String fileContext) {
    try { if (filePath != null && !"".equals(filePath)) {
    String folder = filePath
    .substring(0, filePath.lastIndexOf("/"));
    creatFolder(folder);
    } File file = new File(filePath);
    if (!file.exists()) {
    file.createNewFile();
    }
    if (fileContext != null && !"".equals(fileContext)) {
    FileWriter fileWriter = new FileWriter(file);
    PrintWriter printWriter = new PrintWriter(fileWriter);
    printWriter.println(fileContext);
    fileWriter.close();
    printWriter.close();
    } } catch (Exception e) {
    System.out.println("create file failed!");
    e.printStackTrace();
    }
    } /**
     * 删除文件
     * 
     * @param filePath
     * @author xiaodong.lee 2009-8-23
     */
    public Boolean deleteFile(String filePath) {
    File file = new File(filePath);
    Boolean flag = false;
    if (file.isFile()) {
    flag = file.delete();
    }
    return flag;
    } /**
     * 删除空文件夹
     * 
     * @param folderPath
     * @return
     * @author xiaodong.lee 2009-8-23
     */
    public Boolean deleteNullFolder(String folderPath) { File file = new File(folderPath);
    if (!file.isDirectory() || !file.exists()) {
    System.out.println("路径不存在或者路径不是目录!");
    return false;
    } File[] fileList = file.listFiles();
    if (fileList.length > 0) {
    return false;
    } file.delete(); return true;
    } /**
     * 删除目录下所有目录
     * 
     * @param folderPath
     * @return
     * @author xiaodong.lee 2009-8-23
     */
    public Boolean deleteAllFolder(String folderPath) { File file = new File(folderPath);
    if (!file.isDirectory() || !file.exists()) {
    return false;
    } File[] fileList = file.listFiles(); for (int i = 0; i < fileList.length; i++) {
    if (fileList[i].isDirectory()) {
    File fileSon = fileList[i];
    // 遍历判断是否为空目录,不是空目录删除目录下文件或目录
    if (!deleteNullFolder(fileSon.toString())) {
    deleteAllFolder(fileSon.toString());
    deleteAllfiles(fileSon.toString());
    fileSon.delete();
    } else {
    fileSon.delete();
    }
    }
    } return true;
    } /**
     * 删除目录下所有文件
     * 
     * @param filePath
     * @return
     * @author xiaodong.lee 2009-8-23
     */
    public Boolean deleteAllfiles(String filePath) { File file = new File(filePath);
    if (!file.isDirectory() || !file.exists()) {
    return false;
    } File[] fileList = file.listFiles(); for (int i = 0; i < fileList.length; i++) {
    if (!fileList[i].isDirectory()) {
    File fileSon = fileList[i];
    if (fileSon.isFile()) {
    deleteFile(fileSon.toString());
    }
    }
    }
    return true;
    } /**
     * 删除目录下所有文件和目录
     * 
     * @param filePath
     * @author xiaodong.lee 2009-8-23
     */
    public void deleteAll(String filePath) {
    deleteAllfiles(filePath);
    deleteAllFolder(filePath);
    } /**
     * 复制目录下单个文件
     * 
     * @param oldPass
     * @param newPath
     * @return
     * @author xiaodong.lee 2009-8-24
     */
    public Boolean copyFile(String oldPath, String newPath) {
    try {
    File file = new File(oldPath);
    if (file.isDirectory()) {
    return false;
    } if (file.exists()) {
    FileInputStream inputStream = new FileInputStream(file);
    FileOutputStream outputStream = new FileOutputStream(newPath);
    BufferedInputStream reader = new BufferedInputStream(
    inputStream);
    int len = inputStream.available();
    byte[] buffer = new byte[len]; reader.read(buffer, 0, len);
    outputStream.write(buffer); inputStream.close();
    outputStream.close(); reader.close(); }
    } catch (Exception e) {
    System.out.println("copy file failed!");
    e.printStackTrace();
    }
    return true;
    } /**
     * 复制目录下所有文件和目录
     * 
     * @param oldPath
     * @param newPath
     * @author xiaodong.lee 2009-8-24
     */
    @SuppressWarnings("static-access")
    public Boolean copyAllFile(String oldPath, String newPath) { File file = new File(oldPath); if (!file.exists()) {
    return false;
    } if (file.isFile()) {
    copyFile(oldPath, newPath);
    return false;
    } File[] fileList = file.listFiles();
    File mkdir = new File(newPath); if (!mkdir.exists()) {
    mkdir.mkdirs();
    } for (int i = 0; i < fileList.length; i++) {
    if (fileList[i].isDirectory()) {
    copyAllFile(oldPath + fileList[i].separator
    + fileList[i].getName(), newPath
    + fileList[i].separator + fileList[i].getName());
    } else {
    copyFile(oldPath + fileList[i].separator
    + fileList[i].getName(), newPath
    + fileList[i].separator + fileList[i].getName());
    }
    } return true; }}别直接用了,研究下在用,很简单的
      

  2.   

    如果前后台都布置在同一机器发布可直接通过io来处理文件.如果非同一机器,可选择开启http服务和ftp服务来操作
      

  3.   

    3楼的方法是需要传入路径的。
    比如上传的文件存在项目中WEBROOT下面有个名字为upload的文件夹,获取全路径的方法是
    String path = ServletActionContext.getRequest().getRealPath("upload");
    path就是upload文件夹所在的绝对路径了。
    如果上传时没有上传到WEBROOT下,而是指定到一个自定义的文件夹下,可以把该路径写在一个常量类里面。
    ~~~~~~~~~~~~
    如果文件没有上传到本机上,而是上传到了另外一个专永的文件服务器上,就需要用FTP等方式来进行上传了。不过这时3楼的方法就不能用了。因为他只能应用服务器所在机器上的文件进行操作。