单个文件复制
这里需要用到的是字符型文件输入流 (FileInputStream) 和字符型文件输出流 (FileOutputStream)。
public class FileUtil{
public static void copyFile(String originalFilePath,String targetPath){
File originalFile = new File(originalFilePath);
File targetFile = new File(targetPath+"//"+originalFile.getName());
FileInputStream in = null;
FileOutputStream out = null;
try {
in = new FileInputStream(originalFile);
out = new FileOutputStream(targetFile);
byte[] b = new byte[1024];
int count = in.read(b);
while (count != -1){
out.write(b,0,count);
count = in.read(b);
}
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
if(in != null){
in.close();
}
} catch (IOException e) {
e.printStackTrace();
}
try {
if(out != null){
out.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
测试示例:
public class Main{
public static void main(String[] args) {
FileUtil.copyFile("D://test//asd.jpg","D://test2");
}
}
文件夹及文件复制
思路:在单个文件复制的基础上使用递归思想
public class FileUtil{
public static void copyFile(String originalFilePath,String targetPath){
File originalFile = new File(originalFilePath);
File targetFile = new File(targetPath+"//"+originalFile.getName());
FileInputStream in = null;
FileOutputStream out = null;
try {
in = new FileInputStream(originalFile);
out = new FileOutputStream(targetFile);
byte[] b = new byte[1024];
int count = in.read(b);
while (count != -1){
out.write(b,0,count);
count = in.read(b);
}
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
if(in != null){
in.close();
}
} catch (IOException e) {
e.printStackTrace();
}
try {
if(out != null){
out.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void superCopy(String originalFilePath,String targetPath){
File originalFile = new File(originalFilePath);
File targetFile = new File(targetPath+"//"+originalFile.getName());
File[] files = originalFile.listFiles();
if(files != null && files.length != 0){//为文件夹,向下递归
targetFile.mkdir();
for(File f : files){
superCopy(f.getAbsolutePath(),targetFile.getAbsolutePath());
}
}else {//普通文件
copyFile(originalFilePath,targetPath);
}
}
}
测试示例:
public class Main{
public static void main(String[] args) {
FileUtil.superCopy("D://test//newFile","D://test2");
}
}