com.jdon.util.FileUtil Maven / Gradle / Ivy
/**
* Copyright 2003-2006 the original author or authors.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.jdon.util;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
public class FileUtil {
private static String ENCODING = "UTF-8";
/**
* write the content to a file;
*
* @param output
* @param content
* @throws Exception
*/
public static void createFile(String output, String content) throws Exception {
OutputStreamWriter fw = null;
PrintWriter out = null;
try {
if (ENCODING == null)
ENCODING = PropsUtil.ENCODING;
fw = new OutputStreamWriter(new FileOutputStream(output), ENCODING);
out = new PrintWriter(fw);
out.print(content);
} catch (Exception ex) {
throw new Exception(ex);
} finally {
if (out != null)
out.close();
if (fw != null)
fw.close();
}
}
/**
* read the content from a file;
*
* @param output
* @param content
* @throws Exception
*/
public static String readFile(String input) throws Exception {
char[] buffer = new char[4096];
int len = 0;
StringBuilder content = new StringBuilder(4096);
if (ENCODING == null)
ENCODING = PropsUtil.ENCODING;
InputStreamReader fr = null;
BufferedReader br = null;
try {
fr = new InputStreamReader(new FileInputStream(input), ENCODING);
br = new BufferedReader(fr);
while ((len = br.read(buffer)) > -1) {
content.append(buffer, 0, len);
}
} catch (Exception e) {
throw new Exception(e);
} finally {
if (br != null)
br.close();
if (fr != null)
fr.close();
}
return content.toString();
}
/**
* This class moves an input file to output file
*
* @param String
* input file to move from
* @param String
* output file
*
*/
public static void move(String input, String output) throws Exception {
File inputFile = new File(input);
File outputFile = new File(output);
try {
inputFile.renameTo(outputFile);
} catch (Exception ex) {
throw new Exception("Can not mv" + input + " to " + output + ex.getMessage());
}
}
/**
* This class copies an input file to output file
*
* @param String
* input file to copy from
* @param String
* output file
*/
public static boolean copy(String input, String output) throws Exception {
int BUFSIZE = 65536;
FileInputStream fis = new FileInputStream(input);
FileOutputStream fos = new FileOutputStream(output);
try {
int s;
byte[] buf = new byte[BUFSIZE];
while ((s = fis.read(buf)) > -1) {
fos.write(buf, 0, s);
}
} catch (Exception ex) {
throw new Exception("makehome" + ex.getMessage());
} finally {
fis.close();
fos.close();
}
return true;
}
/**
* create a directory
*
* @param home
* @throws Exception
*/
public static void makehome(String home) throws Exception {
File homedir = new File(home);
if (!homedir.exists()) {
try {
homedir.mkdirs();
} catch (Exception ex) {
throw new Exception("Can not mkdir :" + home + " Maybe include special charactor!");
}
}
}
/**
* This class copies an input files of a directory to another directory not
* include subdir
*
* @param String
* sourcedir the directory to copy from such as:/home/bqlr/images
* @param String
* destdir the target directory
*/
public static void CopyDir(String sourcedir, String destdir) throws Exception {
File dest = new File(destdir);
File source = new File(sourcedir);
String[] files = source.list();
try {
makehome(destdir);
} catch (Exception ex) {
throw new Exception("CopyDir:" + ex.getMessage());
}
for (int i = 0; i < files.length; i++) {
String sourcefile = source + File.separator + files[i];
String destfile = dest + File.separator + files[i];
File temp = new File(sourcefile);
if (temp.isFile()) {
try {
copy(sourcefile, destfile);
} catch (Exception ex) {
throw new Exception("CopyDir:" + ex.getMessage());
}
}
}
}
/**
* This class del a directory recursively,that means delete all files and
* directorys.
*
* @param File
* directory the directory that will be deleted.
*/
public static void recursiveRemoveDir(File directory) throws Exception {
if (!directory.exists())
throw new IOException(directory.toString() + " do not exist!");
String[] filelist = directory.list();
File tmpFile = null;
for (int i = 0; i < filelist.length; i++) {
tmpFile = new File(directory.getAbsolutePath(), filelist[i]);
if (tmpFile.isDirectory()) {
recursiveRemoveDir(tmpFile);
} else if (tmpFile.isFile()) {
try {
tmpFile.delete();
} catch (Exception ex) {
throw new Exception(tmpFile.toString() + " can not be deleted " + ex.getMessage());
}
}
}
try {
directory.delete();
} catch (Exception ex) {
throw new Exception(directory.toString() + " can not be deleted " + ex.getMessage());
} finally {
filelist = null;
}
}
}