JavaIOUtils



import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.FilenameFilter;
import java.util.ArrayList;


/**
 * 作者: 2017年10月21日 上午9:10:33
 */
public class IOUtils {
/**
* 拷贝多级文件夹

* @param srcFolder
*            原文件夹对象
* @param destFolder
*            目标文件夹对象
*/
public static void copyMultiFolder(File srcFolder, File destFolder) {
if (srcFolder.isDirectory()) {// 4.0判断当前的srcFolder是否是一个文件夹
destFolder = new File(destFolder, srcFolder.getName());// 4.1在目标盘符创建一个相同名字的文件夹
destFolder.mkdir();
File[] files = srcFolder.listFiles();// 4.2获取原文件夹底下所有的子文件,然后再调用该方法进行拷贝
for (File f : files) {
copyMultiFolder(f, destFolder);
}
} else {// 5.0说明当前的srcFolder是一个标准文件,那么就直接进行拷贝
File destFile = new File(destFolder, srcFolder.getName());// 5.1在目标盘符创建一个一模一样名称的文件
IOUtils.copyFile(srcFolder, destFile);
}
}


/**
* 拷贝单级文件夹

* @param suffixName
*            指定文件后缀名
* @param srcFolder
*            原文件对象
* @param destFolder
*            目标文件对象
*/
public static void copySingleFolder(String suffixName, File srcFolder, File destFolder) {


destFolder = new File(destFolder, srcFolder.getName());// 3.在目标盘符创建一个一模一样的文件夹文件
destFolder.mkdir();


// 4.筛选原文件夹中指定的文件
File[] files = srcFolder.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
// 判断当前的文件是否是一个标准文件且后缀名是否符合条件
return new File(dir, name).isFile() ? name.endsWith(suffixName) : false;
}
});
// 5.拷贝文件
for (File srcFile : files) {
// 需要在目标盘符上将文件的名字修改了;UUID:每次生成的数值都不一样
File destFile = new File(destFolder, System.currentTimeMillis() + suffixName);
// 调用文件拷贝的方法
copyFile(srcFile, destFile);
}
System.out.println("拷贝单级文件夹指定文件并修改名字成功");
}


/**
* 拷贝文本文件

* @param srcFile
*            原文件对象
* @param destFile
*            目标文件对象
*/
public static void copyTextFile(File srcFile, File destFile) {
try (
// 先读
BufferedReader br = new BufferedReader(new FileReader(srcFile));
// 后写
BufferedWriter bw = new BufferedWriter(new FileWriter(destFile));) {


// 定义一个字符数组容器
char[] cbuf = new char[1024];
// 定义一个变量用于记录每次读取的长度
int len;
// 循环读写
while ((len = br.read(cbuf)) != -1) {// 如果不等于-1,表明还有字符可以读取
// 读多少写出多少
bw.write(cbuf, 0, len);
}
System.out.println("拷贝文本文件成功");
} catch (Exception e) {
e.printStackTrace();
}
}


/**
* 拷贝文本文件

* @param srcPath
*            原文件路径
* @param destPath
*            目标文件路径
*/
public static void copyTextFile(String srcPath, String destPath) {
copyTextFile(new File(srcPath), new File(destPath));
}


/**
* 使用字节流拷贝任何标准文件

* @param srcFile
*            原文件对象
* @param destFile
*            目标文件对象
*/
public static void copyFile(File srcFile, File destFile) {
try ( // 先读
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcFile));
// 后写
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(destFile));) {


// 定义一个字节数组容器
byte[] buf = new byte[1024];
// 定义一个变量用于保存每次读取的字节个数
int len;
// 循环读取
while ((len = bis.read(buf)) != -1) {
// 读多少就写出多少
bos.write(buf, 0, len);
}
System.out.println("拷贝文件成功");
} catch (Exception e) {
e.printStackTrace();
}
}


/**
* 使用字节流拷贝任何标准文件

* @param srcPath
*            原文件路径
* @param destPath
*            目标文件路径
*/
public static void copyFile(String srcPath, String destPath) {
copyFile(new File(srcPath), new File(destPath));
}


/**
* 将List的文本内容保存到指定文件中

* @param list
*            集合
* @param savePath
*            保存内容的文件路径
*/
public static void listSaveFile(ArrayList<String> list, String savePath) {
try (BufferedWriter bw = new BufferedWriter(new FileWriter(savePath));) {
// 因为是我自己写出的数据,多出一个空格无所谓,就直接写出一个字符串
for (String value : list) {
bw.write(value);
// 换行
bw.newLine();
}
System.out.println("写出文本内容成功");
} catch (Exception e) {
e.printStackTrace();
}
}


/**
* 从指定的文件中把内容保存到集合中

* @param list
*            要保存内容的集合
* @param srcPath
*            获取内容的文件路径
*/
public static void getTextFromFile(ArrayList<String> list, String srcPath) {
try (// 先读
BufferedReader br = new BufferedReader(new FileReader(srcPath));) {
// 定义一个变量,用于保存每次读取的内容
String line;
// 循环读取
while ((line = br.readLine()) != null) {// 如果获取的line值不等于null,表明还有字符串可以读取
// 把读取的字符串添加到list集合中
list.add(line);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值