Package com.opensymphony.webwork.portlet.util

Source Code of com.opensymphony.webwork.portlet.util.FileUtils

package com.opensymphony.webwork.portlet.util;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.opensymphony.util.TextUtils;

public class FileUtils {
    private static Log log;

    private static final int BUFFER_SIZE = 1024;

    static {
        log = LogFactory.getLog(com.opensymphony.webwork.portlet.util.FileUtils.class);
    }

    public FileUtils() {
    }

    public static void copyDirectory(File srcDir, File destDir) throws IOException {
        copyDirectory(srcDir, destDir, false);
    }

    public static void copyDirectory(File srcDir, File destDir, boolean overwrite) throws IOException {
        File files[] = srcDir.listFiles();
        if (!destDir.exists())
            destDir.mkdirs();
        else
            log.debug(destDir.getAbsolutePath() + " already exists");
        for (int i = 0; i < files.length; i++) {
            File file = files[i];
            File dest = new File(destDir, file.getName());
            if (file.isFile())
                copyFile(new FileInputStream(file), dest, overwrite);
            else
                copyDirectory(file, dest, overwrite);
        }

    }

    public static void copyFile(File srcFile, File destFile) throws IOException {
        InputStream input = new FileInputStream(srcFile);
        copyFile(input, destFile);
    }

    public static void copyFile(InputStream srcStream, File destFile) throws IOException {
        copyFile(srcStream, destFile, false);
    }

    public static void copyFile(InputStream srcStream, File destFile, boolean overwrite) throws IOException {
        File parentFile = destFile.getParentFile();
        if (!parentFile.isDirectory())
            parentFile.mkdirs();
        if (destFile.exists()) {
            if (overwrite) {
                log.debug("Overwriting file at: " + destFile.getAbsolutePath());
                writeStreamToFile(srcStream, destFile);
            } else {
                log.warn(destFile.getAbsolutePath() + " already exists");
            }
        } else {
            destFile.createNewFile();
            writeStreamToFile(srcStream, destFile);
        }
    }

    private static void writeStreamToFile(InputStream srcStream, File destFile) throws IOException {
        OutputStream output;
        Exception exception;
        InputStream input = null;
        output = null;
        try {
            input = new BufferedInputStream(srcStream);
            output = new BufferedOutputStream(new FileOutputStream(destFile));
            int ch;
            while ((ch = input.read()) != -1)
                output.write(ch);
        } catch (IOException e) {
            log.error("Error writing stream to file: " + destFile.getAbsolutePath());
            throw e;
        } finally {
            input.close();
        }
        output.close();

    }

    public static void saveTextFile(String stringContent, File destFile) throws IOException {
        ensureFileAndPathExist(destFile);
        FileWriter writer = new FileWriter(destFile);
        writer.write(stringContent);
        writer.close();
    }

    public static void ensureFileAndPathExist(File file) throws IOException {
        file.getParentFile().mkdirs();
        file.createNewFile();
    }

    public static void createZipFile(File baseDir, File zipFile) throws Exception {
        FolderArchiver compressor = new FolderArchiver(baseDir, zipFile);
        compressor.doArchive();
    }

    public static List readResourcesAsList(String resource) {
        List result = new ArrayList();
        try {
            InputStream is = ClassLoaderUtils.getResourceAsStream(resource, com.opensymphony.webwork.portlet.util.FileUtils.class);
            BufferedReader in = new BufferedReader(new InputStreamReader(is));
            do {
                String s;
                if ((s = in.readLine()) == null)
                    break;
                String niceS = TextUtils.noNull(s).trim();
                if (TextUtils.stringSet(niceS) && niceS.charAt(0) != '#')
                    result.add(s);
            } while (true);
            is.close();
        } catch (IOException e) {
            log.error("IOException reading stream: " + e, e);
        }
        return result;
    }

    public static String getResourceContent(String resource) {
        InputStream is = ClassLoaderUtils.getResourceAsStream(resource, com.opensymphony.webwork.portlet.util.FileUtils.class);
        return getInputStreamTextContent(is);
    }

    public static String getResourceContent(HttpServletRequest req, String resource) {
        InputStream is = req.getSession().getServletContext().getResourceAsStream(resource);
        String result = getInputStreamTextContent(is);
        if (result == null)
            result = "";
        return result;
    }

    public static String getInputStreamTextContent(InputStream is) {
        if (is == null)
            return null;
        String result = null;
        try {
            ByteArrayOutputStream baos = new ByteArrayOutputStream(is.available());
            pump(is, baos);
            result = new String(baos.toByteArray());
            is.close();
        } catch (IOException e) {
            log.error("IOException reading stream: " + e, e);
        }
        return result;
    }

    private static void pump(InputStream is, OutputStream os) throws IOException {
        byte buffer[] = new byte[1024];
        int lengthRead;
        while ((lengthRead = is.read(buffer)) >= 0)
            os.write(buffer, 0, lengthRead);
    }

    public static boolean deleteDir(File dir) {
        if (dir == null)
            return false;
        File candir;
        try {
            candir = dir.getCanonicalFile();
        } catch (IOException e) {
            return false;
        }
        if (!candir.equals(dir.getAbsoluteFile()))
            return false;
        File files[] = candir.listFiles();
        if (files != null) {
            for (int i = 0; i < files.length; i++) {
                File file = files[i];
                boolean deleted = !file.delete();
                if (deleted && file.isDirectory())
                    deleteDir(file);
            }

        }
        return dir.delete();
    }

}
TOP

Related Classes of com.opensymphony.webwork.portlet.util.FileUtils

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.