文件里完成了新文件的创建写入,以及复制
//完成指定目录的复制,使用当前工作目录出现问题,因为文件被打开无法复制
public class File005 {
private static int counts=0;
public static void main(String[] args) throws Exception {
// 1.首先确定源目录,然后设置一个目的地址
String src = "D:/Temp";
String end = "d:/testw";
int i= copyfiles(src, end,0);
System.out.println("复制文件夹完成"+new File(src).getPath()+"文件夹为"+i);
System.out.println("总文件夹为"+counts);
//便利结束后新建一个文件写入当前时间
String ss="d:/welcome.txt";
File file3=new File(ss);
String sx= new Date().toString()+"老王";
Writer writer=new FileWriter(file3);
writer.write(sx);
writer.flush();
String ss1="d:/welcome_bak.txt";
File file4=new File(ss1);
Reader reader=new FileReader(file3);
Writer writer2=new FileWriter(file4);
char[] cbuf=new char[1024];
int d=0;
while((d=reader.read(cbuf))!=-1) {
writer2.write(cbuf);
writer2.flush();
}
writer.close();
reader.close();
writer2.close();
}
// 文件目录复制的方法,统计文件夹的个数
private static int copyfiles(String src, String end,int i) throws Exception {
// 获取源目录的文件数组,遍历数组给目的地址添加目录或文件
File file = new File(src);
File file2 = new File(end);
if (!file2.exists()) {// 确保目的目录存在
file2.mkdirs();
}
File[] files = file.listFiles();
for (File f : files) {
if (f.isFile()) {// 如果是文件则复制文件
copyone(f.getPath(), end + "/" + f.getName());
} else if (f.isDirectory()) {// 原文件是个目录;
counts++;
i++;
int c=copyfiles(f.getPath(), end + "/" + f.getName(),0);
System.out.println(f.getPath()+"文件夹为"+c);
}
}
return i;
}
// 单个文件复制方法
private static void copyone(String path, String string) throws Exception {
// 读出
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(new File(path)));
// 写文件流
File file = new File(string);
if (!file.exists()) {
file.createNewFile();
}
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file));
byte[] b = new byte[1024];
int i = 0;
while ((i = bis.read(b)) != -1) {
bos.write(b);
bos.flush();
}
bos.close();
bis.close();
}
}