JAVA_IO


/**
* 1、编写程序,将一个目录及其子目录下的所有 txt 类型的文本文件中的内容合并到若干个新的文本文件中,
* 当第一个新产生的文件存储的内容达到 1M 时,剩下的内容存储到第二个新的文件中,依次往下,
* 新产生的文本文件名依次为 1.txt、2.txt
* */
public class TestIO {




private static int number = 1;

public static void main(String[] args) {

List<String> result = new ArrayList<String>();
getFilePath("E:\\abc",result);
readToDest(result);
}

//得到路径下所有 txt文件的绝对路径
public static void getFilePath(String dirs,List<String> slist)
{

File dir =new File(dirs);
File[] files = dir.listFiles();
for(File f :files)
{
if(f.isFile() && f.getName().endsWith("txt"))
{
slist.add(f.getAbsolutePath());
}
else if(f.isDirectory())
{
getFilePath(f.getAbsolutePath(),slist);
}
}
}
public static void readToDest(List<String> src)
{

for(String dest : src)
{
String newFilePath = "D://ttt//" + number + ".txt";
File newFile = new File(newFilePath);
if(!newFile.exists())
{
try {
newFile.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// 旧文件输入流
try {
FileInputStream fIn = new FileInputStream(new File(dest));
BufferedInputStream bIn = new BufferedInputStream(fIn);
// 新文件输出流
FileOutputStream fOut = new FileOutputStream(newFilePath, true);
BufferedOutputStream bOut = new BufferedOutputStream(fOut);
byte[] bytes = new byte[1024];
while (bIn.read(bytes) != -1) {
if (newFile.length() > 1024 * 1024) {
newFilePath = "D://ttt//" + ++number + ".txt";
newFile = new File(newFilePath);
fOut = new FileOutputStream(newFilePath);
bOut = new BufferedOutputStream(fOut);
bOut.write(bytes);
} else
{
bOut.write(bytes);
}
bOut.flush();
}
bIn.close();
bOut.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值