📄 fileutils.java
字号:
package com.set.utils;
import java.io.File;
import java.io.IOException;
import java.io.FileOutputStream;
import java.io.FileInputStream;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.io.InputStream;
import java.util.Hashtable;
import java.util.List;
import java.util.ArrayList;
/**
*
* <p>
* Title: app framework
* </p>
* <p>
* Description:
* </p>
* <p>
* Copyright: Copyright (c) 2004
* </p>
* <p>
* Company: SET
* </p>
*
* @author zhifeng
* @version 1.0
*/
public class FileUtils {
/**
* 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) {
File inputFile = new File(input);
File outputFile = new File(output);
inputFile.renameTo(outputFile);
}
/**
* 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;
try {
FileInputStream fis = new FileInputStream(input);
FileOutputStream fos = new FileOutputStream(output);
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());
}
return true;
}
/**
* 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 {
dest.mkdirs();
} 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()) {
tmpFile.delete();
}
}
directory.delete();
}
/**
* 将字符串存入文件
*
* @param source
* String
* @param fileDir
* String
* @param name
* String
* @throws Exception
*/
public static void saveFile(String source, String fileDir, String name)
throws Exception {
File file = new File(fileDir);
if (!file.exists()) {
file.mkdirs();
}
String fileSep = fileDir.indexOf(File.separator) > 0 ? File.separator
: "/";
String fileName = "";
fileName = fileDir.endsWith(fileSep) ? fileDir + name : fileDir
+ fileSep + name;
BufferedWriter out = new BufferedWriter(new FileWriter(fileName));
out.write(source);
out.flush();
out.close();
}
/**
* 新建目录
*
* @param folderPath
* String 如 c:/fqf
* @return boolean
*/
public static void newFolder(String folderPath) {
try {
String filePath = folderPath;
filePath = filePath.toString();
java.io.File myFilePath = new java.io.File(filePath);
if (!myFilePath.exists()) {
myFilePath.mkdir();
}
} catch (Exception e) {
System.out.println("新建目录操作出错");
e.printStackTrace();
}
}
/**
* 新建文件
*
* @param filePathAndName
* String 文件路径及名称 如c:/fqf.txt
* @param fileContent
* String 文件内容
* @return boolean
*/
public static void newFile(String filePathAndName, String fileContent) {
try {
String filePath = filePathAndName;
filePath = filePath.toString();
File myFilePath = new File(filePath);
if (!myFilePath.exists()) {
myFilePath.createNewFile();
}
FileWriter resultFile = new FileWriter(myFilePath);
PrintWriter myFile = new PrintWriter(resultFile);
String strContent = fileContent;
myFile.println(strContent);
resultFile.close();
} catch (Exception e) {
System.out.println("新建目录操作出错");
e.printStackTrace();
}
}
/**
* 删除文件
*
* @param filePathAndName
* String 文件路径及名称 如c:/fqf.txt
* @param fileContent
* String
* @return boolean
*/
public static void delFile(String filePathAndName) {
try {
String filePath = filePathAndName;
filePath = filePath.toString();
java.io.File myDelFile = new java.io.File(filePath);
myDelFile.delete();
} catch (Exception e) {
System.out.println("删除文件操作出错");
e.printStackTrace();
}
}
/**
* 删除文件夹
*
* @param filePathAndName
* String 文件夹路径及名称 如c:/fqf
* @param fileContent
* String
* @return boolean
*/
public static void delFolder(String folderPath) {
try {
delAllFile(folderPath); // 删除完里面所有内容
String filePath = folderPath;
filePath = filePath.toString();
java.io.File myFilePath = new java.io.File(filePath);
myFilePath.delete(); // 删除空文件夹
} catch (Exception e) {
System.out.println("删除文件夹操作出错");
e.printStackTrace();
}
}
/**
* 删除文件夹里面的所有文件
*
* @param path
* String 文件夹路径 如 c:/fqf
*/
public static void delAllFile(String path) {
File file = new File(path);
if (!file.exists()) {
return;
}
if (!file.isDirectory()) {
return;
}
String[] tempList = file.list();
File temp = null;
for (int i = 0; i < tempList.length; i++) {
if (path.endsWith(File.separator)) {
temp = new File(path + tempList[i]);
} else {
temp = new File(path + File.separator + tempList[i]);
}
if (temp.isFile()) {
temp.delete();
}
if (temp.isDirectory()) {
delAllFile(path + "/" + tempList[i]);// 先删除文件夹里面的文件
delFolder(path + "/" + tempList[i]);// 再删除空文件夹
}
}
}
/**
* 复制单个文件
*
* @param oldPath
* String 原文件路径 如:c:/fqf.txt
* @param newPath
* String 复制后路径 如:f:/fqf.txt
* @return boolean history: modified by zhifeng at 2004-11-12 20:59,make the
* new filepath directorys if them do not exist.
*/
public static void copyFile(String oldPath, String newPath) {
try {
int bytesum = 0;
int byteread = 0;
File oldfile = new File(oldPath);
if (oldfile.exists()) { // 文件存在时
// 如果新文件不存在的话,则创建该文件所在的一序列目录
int i = newPath.lastIndexOf(File.separator);
if (i > 0) {
File newFile = new File(newPath.substring(0, i
+ File.separator.length()));
if (!newFile.exists())
newFile.mkdirs();
}
InputStream inStream = new FileInputStream(oldPath); // 读入原文件
FileOutputStream fs = new FileOutputStream(newPath);
byte[] buffer = new byte[1444];
int length;
while ((byteread = inStream.read(buffer)) != -1) {
bytesum += byteread; // 字节数 文件大小
// System.out.println(bytesum);
fs.write(buffer, 0, byteread);
}
inStream.close();
}
} catch (Exception e) {
System.out.println("复制单个文件操作出错");
e.printStackTrace();
}
}
/**
* 复制整个文件夹内容
*
* @param oldPath
* String 原文件路径 如:c:/fqf
* @param newPath
* String 复制后路径 如:f:/fqf/ff
* @return boolean 2004-12-25 添加了不复制某些文件的功能 zhifeng 添加了当目标文件不存在时的处理方式
*/
public static void copyFolder(String oldPath, String newPath,
List excludeFiles) {
try {
(new File(newPath)).mkdirs(); // 如果文件夹不存在 则建立新文件夹
File a = new File(oldPath);
String[] file = a.list();
File temp = null;
for (int i = 0; i < file.length; i++) {
if (oldPath.endsWith(File.separator)) {
temp = new File(oldPath + file[i]);
} else {
temp = new File(oldPath + File.separator + file[i]);
}
if (temp.isFile()) {
String tmpName = temp.getName();
// 如果没有过滤文件限制,或者文件不在过滤列表中或者在过滤列表中但目标文件还不存在 时必须拷贝
if (null == excludeFiles
|| !excludeFiles.contains(tmpName)
|| !checkFileExists(newPath + "/"
+ (temp.getName()).toString())) {
FileInputStream input = new FileInputStream(temp);
FileOutputStream output = new FileOutputStream(newPath
+ "/" + (temp.getName()).toString());
byte[] b = new byte[1024 * 5];
int len;
while ((len = input.read(b)) != -1) {
output.write(b, 0, len);
}
output.flush();
output.close();
input.close();
}
}
if (temp.isDirectory()) {// 如果是子文件夹
copyFolder(oldPath + "/" + file[i],
newPath + "/" + file[i], excludeFiles);
}
}
} catch (Exception e) {
System.out.println("复制整个文件夹内容操作出错");
e.printStackTrace();
}
}
/**
* 移动文件到指定目录
*
* @param oldPath
* String 如:c:/fqf.txt
* @param newPath
* String 如:d:/fqf.txt
*/
public static void moveFile(String oldPath, String newPath) {
copyFile(oldPath, newPath);
delFile(oldPath);
}
/**
* 移动文件到指定目录
*
* @param oldPath
* String 如:c:/fqf.txt
* @param newPath
* String 如:d:/fqf.txt 2004-12-25 zhifeng
*/
public static void moveFolder(String oldPath, String newPath) {
List ht = new ArrayList();
copyFolder(oldPath, newPath, ht);
delFolder(oldPath);
}
/**
* 判断
*
* @param path
* String
* @return boolean
*/
public static boolean checkFileExists(String path) {
File file = new File(path);
return file.exists();
}
public static long getFileSize(String path) {
File file = new File(path);
if (file.exists()) {
return file.length();
} else {
return 0;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -