package com.ljf.test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileUtil {
/**
* 移动指定文件或文件夹(包括所有文件和子文件夹)
*
* @param fromDir
* 要移动的文件或文件夹
* @param toDir
* 目标文件夹
* @throws Exception
*/
public static void moveFolderAndFileWithSelf(String from, String to) throws Exception {
try {
File dir = new File(from);
to += File.separator + dir.getName();
File moveDir = new File(to);
if(dir.isDirectory()){
if (!moveDir.exists()) {
moveDir.mkdirs();
}
}else{
File tofile = new File(to);
dir.renameTo(tofile);
return;
}
File[] files = dir.listFiles();
if (files == null)
return;
for (int i = 0; i < files.length; i++) {
System.out.println("文件名:"+files[i].getName());
if (files[i].isDirectory()) {
moveFolderAndFileWithSelf(files[i].getPath(), to);
files[i].delete();
}
File moveFile = new File(moveDir.getPath() + File.separator + files[i].getName());
if (moveFile.exists()) {
moveFile.delete();
}
files[i].renameTo(moveFile);
}
dir.delete();
} catch (Exception e) {
throw e;
}
}
/**
* 复制单个文件(可更名复制)
* @param oldPathFile 准备复制的文件源
* @param newPathFile 拷贝到新绝对路径带文件名(注:目录路径需带文件名)
* @return
*/
public static void copySingleFile(String oldPathFile, String newPathFile) {
try {
int bytesum = 0;
int byteread = 0;
File oldfile = new File(oldPathFile);
if (oldfile.exists()) {
FileInputStream inStream = new FileInputStream(oldPathFile);
FileOutputStream fs = new FileOutputStream(newPathFile);
byte[] buffer = new byte[1444];
while ((byteread = inStream.read(buffer)) != -1) {
bytesum += byteread;
fs.write(buffer, 0, byteread);
}
inStream.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 复制单个文件(原名复制)
* @param oldPathFile 准备复制的文件源
* @param newPathFile 拷贝到新绝对路径带文件名(注:目录路径需带文件名)
* @return
*/
public static void copySingleFileTo(String oldPathFile, String targetPath) {
try {
int bytesum = 0;
int byteread = 0;
File oldfile = new File(oldPathFile);
String targetfile = targetPath + File.separator + oldfile.getName();
if (oldfile.exists()) {
FileInputStream inStream = new FileInputStream(oldPathFile);
FileOutputStream fs = new FileOutputStream(targetfile);
byte[] buffer = new byte[1444];
while ((byteread = inStream.read(buffer)) != -1) {
bytesum += byteread;
fs.write(buffer, 0, byteread);
}
inStream.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 复制整个文件夹的内容(含自身)
* @param oldPath 准备拷贝的目录
* @param newPath 指定绝对路径的新目录
* @return
*/
public static void copyFolderWithSelf(String oldPath, String newPath) {
try {
new File(newPath).mkdirs();
File dir = new File(oldPath);
newPath += File.separator + dir.getName();
File moveDir = new File(newPath);
if(dir.isDirectory()){
if (!moveDir.exists()) {
moveDir.mkdirs();
}
}
String[] file = dir.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()) {
FileInputStream input = new FileInputStream(temp);
FileOutputStream output = new FileOutputStream(newPath +
"/" +
(temp.getName()).toString());
System.out.println(temp.getAbsolutePath());
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()) {
copyFolderWithSelf(oldPath + "/" + file[i], newPath);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void reNameFile(File src) {
if (!src.exists()) {
System.out.println("文件不存在!");
}
else {
FileInputStream fileInputStream = null;
FileOutputStream fileOutputStream = null;
boolean isCp = true;
try {
fileInputStream = new FileInputStream(src);
String absolutePath = src.getAbsolutePath();
if(absolutePath.endsWith(".java") || absolutePath.endsWith(".xml") || absolutePath.endsWith(".txt")){
fileOutputStream = new FileOutputStream(absolutePath+"_bak");
}else{
isCp = false;
}
if(isCp){
int len = 0;
byte[] data = new byte[1024];
while ((len = fileInputStream.read(data)) != -1) {
fileOutputStream.write(data, 0, len);
}
fileOutputStream.flush();
}
}
catch (IOException e) {
e.printStackTrace();
System.out.println("文件 FileNotFoundException");
}
finally {
if (fileOutputStream != null) {
try {
fileOutputStream.close();
}
catch (IOException e) {
e.printStackTrace();
}
}
if (fileInputStream != null) {
try {
fileInputStream.close();
}
catch (IOException e) {
e.printStackTrace();
}
}
if(isCp){
src.delete();
}
}
}
}
public static void reNameFile2(File src) {
if (!src.exists()) {
System.out.println("文件不存在!");
}
else {
FileInputStream fileInputStream = null;
FileOutputStream fileOutputStream = null;
boolean isCp = true;
try {
fileInputStream = new FileInputStream(src);
String absolutePath = src.getAbsolutePath();
if(absolutePath.endsWith(".java_bak") || absolutePath.endsWith(".xml_bak") || absolutePath.endsWith(".txt_bak")){
String substring = absolutePath.substring(0, absolutePath.lastIndexOf('_'));
System.out.println(substring);
fileOutputStream = new FileOutputStream(substring);
}else{
isCp = false;
}
if(isCp){
int len = 0;
byte[] data = new byte[1024];
while ((len = fileInputStream.read(data)) != -1) {
fileOutputStream.write(data, 0, len);
}
fileOutputStream.flush();
}
}
catch (IOException e) {
e.printStackTrace();
System.out.println("文件 FileNotFoundException");
}
finally {
if (fileOutputStream != null) {
try {
fileOutputStream.close();
}
catch (IOException e) {
e.printStackTrace();
}
}
if (fileInputStream != null) {
try {
fileInputStream.close();
}
catch (IOException e) {
e.printStackTrace();
}
}
if(isCp){
src.delete();
}
}
}
}
}
package com.ljf.test;
import java.io.File;
public class Test {
static int i = 0;
static String url1 = "e:/aa";
static String url2 = "e:/b";
public static void main(String[] args) throws Exception {
System.out.println("----解密中---");
print(new File(url2));
System.out.println("--ok--size:"+i);
}
public static void print(File f) {
if (f != null) {
if (f.isDirectory()) {
File[] fileArray = f.listFiles();
if (fileArray != null) {
for (int i = 0; i < fileArray.length; i++) {
print(fileArray[i]);
}
}
}
else {
FileUtil.reNameFile(f);
i++;
}
}
}
}