java 文件复制工具类_Java文件操作工具类fileUtil实例【文件增删改,复制等】

本文实例讲述了Java文件操作工具类fileUtil。分享给大家供大家参考,具体如下:

package com.gcloud.common;

import java.io.*;

import java.net.MalformedURLException;

import java.net.URL;

/**

* 文件工具类

* Created by charlin on 2017/9/8.

*/

public class FileUtil {

/**

* 读取文件内容

*

* @param is

* @return

*/

public static String readFile(InputStream is) {

BufferedReader br = null;

StringBuffer sb = new StringBuffer();

try {

br = new BufferedReader(new InputStreamReader(is, "UTF-8"));

String readLine = null;

while ((readLine = br.readLine()) != null) {

sb.append(readLine);

}

} catch (Exception e) {

e.printStackTrace();

} finally {

try {

br.close();

is.close();

} catch (IOException e) {

e.printStackTrace();

}

}

return sb.toString();

}

/**

* 判断指定的文件是否存在。

*

* @param fileName

* @return

*/

public static boolean isFileExist(String fileName) {

return new File(fileName).isFile();

}

/**

* 创建指定的目录。 如果指定的目录的父目录不存在则创建其目录书上所有需要的父目录。

* 注意:可能会在返回false的时候创建部分父目录。

*

* @param file

* @return

*/

public static boolean makeDirectory(File file) {

File parent = file.getParentFile();

if (parent != null) {

return parent.mkdirs();

}

return false;

}

/**

* 返回文件的URL地址。

*

* @param file

* @return

* @throws MalformedURLException

*/

public static URL getURL(File file) throws MalformedURLException {

String fileURL = "file:/" + file.getAbsolutePath();

URL url = new URL(fileURL);

return url;

}

/**

* 从文件路径得到文件名。

*

* @param filePath

* @return

*/

public static String getFileName(String filePath) {

File file = new File(filePath);

return file.getName();

}

/**

* 从文件名得到文件绝对路径。

*

* @param fileName

* @return

*/

public static String getFilePath(String fileName) {

File file = new File(fileName);

return file.getAbsolutePath();

}

/**

* 将DOS/Windows格式的路径转换为UNIX/Linux格式的路径。

*

* @param filePath

* @return

*/

public static String toUNIXpath(String filePath) {

return filePath.replace("", "/");

}

/**

* 从文件名得到UNIX风格的文件绝对路径。

*

* @param fileName

* @return

*/

public static String getUNIXfilePath(String fileName) {

File file = new File(fileName);

return toUNIXpath(file.getAbsolutePath());

}

/**

* 得到文件后缀名

*

* @param fileName

* @return

*/

public static String getFileExt(String fileName) {

int point = fileName.lastIndexOf('.');

int length = fileName.length();

if (point == -1 || point == length - 1) {

return "";

} else {

return fileName.substring(point + 1, length);

}

}

/**

* 得到文件的名字部分。 实际上就是路径中的最后一个路径分隔符后的部分。

*

* @param fileName

* @return

*/

public static String getNamePart(String fileName) {

int point = getPathLastIndex(fileName);

int length = fileName.length();

if (point == -1) {

return fileName;

} else if (point == length - 1) {

int secondPoint = getPathLastIndex(fileName, point - 1);

if (secondPoint == -1) {

if (length == 1) {

return fileName;

} else {

return fileName.substring(0, point);

}

} else {

return fileName.substring(secondPoint + 1, point);

}

} else {

return fileName.substring(point + 1);

}

}

/**

* 得到文件名中的父路径部分。 对两种路径分隔符都有效。 不存在时返回""。

* 如果文件名是以路径分隔符结尾的则不考虑该分隔符,例如"/path/"返回""。

*

* @param fileName

* @return

*/

public static String getPathPart(String fileName) {

int point = getPathLastIndex(fileName);

int length = fileName.length();

if (point == -1) {

return "";

} else if (point == length - 1) {

int secondPoint = getPathLastIndex(fileName, point - 1);

if (secondPoint == -1) {

return "";

} else {

return fileName.substring(0, secondPoint);

}

} else {

return fileName.substring(0, point);

}

}

/**

* 得到路径分隔符在文件路径中最后出现的位置。 对于DOS或者UNIX风格的分隔符都可以。

*

* @param fileName

* @return

*/

public static int getPathLastIndex(String fileName) {

int point = fileName.lastIndexOf("/");

if (point == -1) {

point = fileName.lastIndexOf("");

}

return point;

}

/**

* 得到路径分隔符在文件路径中指定位置前最后出现的位置。 对于DOS或者UNIX风格的分隔符都可以。

*

* @param fileName

* @param fromIndex

* @return

*/

public static int getPathLastIndex(String fileName, int fromIndex) {

int point = fileName.lastIndexOf("/", fromIndex);

if (point == -1) {

point = fileName.lastIndexOf("", fromIndex);

}

return point;

}

/**

* 得到路径分隔符在文件路径中首次出现的位置。 对于DOS或者UNIX风格的分隔符都可以。

*

* @param fileName

* @return

*/

public static int getPathIndex(String fileName) {

int point = fileName.indexOf("/");

if (point == -1) {

point = fileName.indexOf("");

}

return point;

}

/**

* 得到路径分隔符在文件路径中指定位置后首次出现的位置。 对于DOS或者UNIX风格的分隔符都可以。

*

* @param fileName

* @param fromIndex

* @return

*/

public static int getPathIndex(String fileName, int fromIndex) {

int point = fileName.indexOf("/", fromIndex);

if (point == -1) {

point = fileName.indexOf("", fromIndex);

}

return point;

}

/**

* 将文件名中的类型部分去掉。

*

* @param filename

* @return

*/

public static String removeFileExt(String filename) {

int index = filename.lastIndexOf(".");

if (index != -1) {

return filename.substring(0, index);

} else {

return filename;

}

}

/**

* 得到相对路径。 文件名不是目录名的子节点时返回文件名。

*

* @param pathName

* @param fileName

* @return

*/

public static String getSubpath(String pathName, String fileName) {

int index = fileName.indexOf(pathName);

if (index != -1) {

return fileName.substring(index + pathName.length() + 1);

} else {

return fileName;

}

}

/**

* 删除一个文件。

*

* @param filename

* @throws IOException

*/

public static void deleteFile(String filename) throws IOException {

File file = new File(filename);

if (file.isDirectory()) {

throw new IOException("IOException -> BadInputException: not a file.");

}

if (!file.exists()) {

throw new IOException("IOException -> BadInputException: file is not exist.");

}

if (!file.delete()) {

throw new IOException("Cannot delete file. filename = " + filename);

}

}

/**

* 删除文件夹及其下面的子文件夹

*

* @param dir

* @throws IOException

*/

public static void deleteDir(File dir) throws IOException {

if (dir.isFile())

throw new IOException("IOException -> BadInputException: not a directory.");

File[] files = dir.listFiles();

if (files != null) {

for (int i = 0; i < files.length; i++) {

File file = files[i];

if (file.isFile()) {

file.delete();

} else {

deleteDir(file);

}

}

}

dir.delete();

}

/**

* 复制文件

*

* @param src

* @param dst

* @throws Exception

*/

public static void copy(File src, File dst) throws Exception {

int BUFFER_SIZE = 4096;

InputStream in = null;

OutputStream out = null;

try {

in = new BufferedInputStream(new FileInputStream(src), BUFFER_SIZE);

out = new BufferedOutputStream(new FileOutputStream(dst), BUFFER_SIZE);

byte[] buffer = new byte[BUFFER_SIZE];

int len = 0;

while ((len = in.read(buffer)) > 0) {

out.write(buffer, 0, len);

}

} catch (Exception e) {

throw e;

} finally {

if (null != in) {

try {

in.close();

} catch (IOException e) {

e.printStackTrace();

}

in = null;

}

if (null != out) {

try {

out.close();

} catch (IOException e) {

e.printStackTrace();

}

out = null;

}

}

}

/**

* @复制文件,支持把源文件内容追加到目标文件末尾

* @param src

* @param dst

* @param append

* @throws Exception

*/

public static void copy(File src, File dst, boolean append) throws Exception {

int BUFFER_SIZE = 4096;

InputStream in = null;

OutputStream out = null;

try {

in = new BufferedInputStream(new FileInputStream(src), BUFFER_SIZE);

out = new BufferedOutputStream(new FileOutputStream(dst, append), BUFFER_SIZE);

byte[] buffer = new byte[BUFFER_SIZE];

int len = 0;

while ((len = in.read(buffer)) > 0) {

out.write(buffer, 0, len);

}

} catch (Exception e) {

throw e;

} finally {

if (null != in) {

try {

in.close();

} catch (IOException e) {

e.printStackTrace();

}

in = null;

}

if (null != out) {

try {

out.close();

} catch (IOException e) {

e.printStackTrace();

}

out = null;

}

}

}

}

希望本文所述对大家java程序设计有所帮助。

package com.hexiang.utils; import java.io.*; /** * FileUtil. Simple file operation class. * * @author BeanSoft * */ public class FileUtil { /** * The buffer. */ protected static byte buf[] = new byte[1024]; /** * Read content from local file. FIXME How to judge UTF-8 and GBK, the * correct code should be: FileReader fr = new FileReader(new * InputStreamReader(fileName, "ENCODING")); Might let the user select the * encoding would be a better idea. While reading UTF-8 files, the content * is bad when saved out. * * @param fileName - * local file name to read * @return * @throws Exception */ public static String readFileAsString(String fileName) throws Exception { String content = new String(readFileBinary(fileName)); return content; } /** * 读取文件并返回为给定字符集的字符串. * @param fileName * @param encoding * @return * @throws Exception */ public static String readFileAsString(String fileName, String encoding) throws Exception { String content = new String(readFileBinary(fileName), encoding); return content; } /** * 读取文件并返回为给定字符集的字符串. * @param fileName * @param encoding * @return * @throws Exception */ public static String readFileAsString(InputStream in) throws Exception { String content = new String(readFileBinary(in)); return content; } /** * Read content from local file to binary byte array. * * @param fileName - * local file name to read * @return * @throws Exception */ public static byte[] readFileBinary(String fileName) throws Exception { FileInputStream fin = new FileInputStream(fileName); return readFileBinary(fin); } /** * 从输入流读取数据为二进制字节数组. * @param streamIn * @return * @throws IOException */ public static byte[] readFileBinary(InputStream streamIn) throws IOException { BufferedInputStream in = new BufferedInputStream(streamIn); ByteArrayOutputStream out = new ByteArrayOutputStream(10240); int len; while ((len
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值