代码实现复制文件
/*
* 编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad。* <复制前改名>
*/
public class CopyFolder {
public static void main(String[] args) throws IOException {
// 封装d:\\java这个目录
File srcFile = new File("d:\\hellodong");
// 获取该目录所有满足条件的File[]数组。
File[] fileArray = srcFile.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
System.out.println(dir+"---"+name);
return new File(dir, name).isFile() && name.endsWith(".java");
}
});
//判断是否存在目的地目录,如果没有,就创建。
File destFile = new File("d:\\jad");
if(!destFile.exists()){
destFile.mkdirs();
}
// 遍历File[]数组,获取到每一个File。
for (File file : fileArray) {
// file -- d:\\java\\Constant.java -- 数据源
//最终的结果: d:\\jad\\Constant.jad -- 目的地
//复制前改名
String name = file.getName(); //Constant.java
String newName = name.replace(".java", ".jad");//Constant.jad
File newFile = new File(destFile,newName);//d:\\jad\\Constant.jad
//复制文件
BufferedReader br = new BufferedReader(new FileReader(file));
BufferedWriter bw = new BufferedWriter(new FileWriter(newFile));
String line = null;
while((line=br.readLine())!=null){
bw.write(line);
bw.newLine();
bw.flush();
}
bw.close();
br.close();
}
}
}
/*
* 编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad。
* <复制完之后改名>
*/
public class CopyFolder2 {
public static void main(String[] args) throws IOException {
File srcFile = new File("d:\\java");
File[] fileArray = srcFile.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return new File(dir, name).isFile() && name.endsWith(".java");
}
});
File destFile = new File("d:\\jad");
if (!destFile.exists()) {
destFile.mkdir();
}
for (File file : fileArray) {
String name = file.getName();
File newFile = new File(destFile, name);
BufferedReader br = new BufferedReader(new FileReader(file));
BufferedWriter bw = new BufferedWriter(new FileWriter(newFile));
String line = null;
while((line=br.readLine())!=null){
bw.write(line);
bw.newLine();
bw.flush();
}
bw.close();
br.close();
}
File[] destFileArray = destFile.listFiles();
for(File file : destFileArray){
String name = file.getName();
String newName = name.replace(".java", ".jad");
File newFile = new File(destFile,newName);
file.renameTo(newFile);
}
}
}
二进制流的复制
复制图片:把项目路径下的mn.jpg复制到d:\\mn.jpg
分析:
A:用字符流
B:用字节流
二进制流数据:图片,视频,音频等。
由于二进制的合并为字符,在我们使用的编码表中没有对应的数据,那么,将来在写回去的时候,就会有数据的丢失。
所以,二进制流数据只能使用字节流进行操作。
public class CopyImage {
public static void main(String[] args) throws IOException {
// method1();
method2();
}
// 用字节流--一次一个字节数组
private static void method2() throws IOException {
// 封装数据源和目的地
FileInputStream fis = new FileInputStream("mn.jpg");
FileOutputStream fos = new FileOutputStream("d:\\mn.jpg", true);
// 读写
byte[] bys = new byte[1024];
int len = 0;
while ((len = fis.read(bys)) != -1) {
fos.write(bys, 0, len);
}
// 释放资源
fos.close();
fis.close();
}
// 用字符流--一次一个字符
private static void method1() throws IOException {
// 封装数据源和目的地
FileReader fr = new FileReader("mn.jpg");
FileWriter fw = new FileWriter("d:\\mn.jpg");
// 基本读写
int ch = 0;
while ((ch = fr.read()) != -1) {
fw.write(ch);
// fw.flush();
}
// 释放资源
fw.close();
fr.close();
}
}
复制MP3,加入异常处理标准格式。
数据源:
d:\\Pink.mp3
目的地:
copy.mp3
public class CopyMP3 {
public static void main(String[] args) {
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
bis = new BufferedInputStream(new FileInputStream("d:\\Pink.mp3"));
bos = new BufferedOutputStream(new FileOutputStream("copy.mp3"));
byte[] bys = new byte[1024];
int len = 0;
while ((len = bis.read(bys)) != -1) {
bos.write(bys, 0, len);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (bos != null) {
try {
bos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (bis != null) {
try {
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}