1.报错解决 :java.io.FileNotFoundException: G:\dad (拒绝访问。)
参考文献:(364条消息) java.io.FileNotFoundException:(拒接访问)_corelone2的博客-CSDN博客_java.io.filenotfoundexception
2.code
代码参考地址:(364条消息) java中文件拷贝的几种方式_babarianDual的博客-CSDN博客
package day01;import java.io.*;
import java.nio.channels.FileChannel;
import java.nio.file.Files;public class 文件拷贝 {public static void main(String[] args) throws IOException {String s1="G:\\dad\\hb.jpg";String s2="G:\\dada\\12.png";File file1 = new File(s1);//获取文件名称String name = file1.getName();System.out.println(name);File file2 = new File(s2);copyFileByChannel(file1,file2);}public static void copyFileByChannel(File file, File fileTo) throws IOException {FileChannel fileChannel = new FileInputStream(file).getChannel();FileChannel fileChannelTo = new FileOutputStream(fileTo).getChannel();for (long count = fileChannel.size(); count > 0; ) {long transferred = fileChannel.transferTo(fileChannel.position(), count, fileChannelTo);count -= transferred;}}public static void copyFileByStream(File file, File fileTo) throws IOException {InputStream in = new FileInputStream(file);OutputStream out = new FileOutputStream(fileTo);byte[] buffer = new byte[1024];int length;while ((length = in.read(buffer)) > 0) {out.write(buffer, 0, length);}}}
package day01;import java.io.*; import java.nio.channels.FileChannel; import java.nio.file.Files;public class 文件拷贝 {public static void main(String[] args) throws IOException {String s1="G:\\dad\\hb.jpg";String s2="G:\\dada\\12.png";File file1 = new File(s1);//获取文件名称String name = file1.getName();System.out.println(name);File file2 = new File(s2);copyFileByChannel(file1,file2);}public static void copyFileByChannel(File file, File fileTo) throws IOException {FileChannel fileChannel = new FileInputStream(file).getChannel();FileChannel fileChannelTo = new FileOutputStream(fileTo).getChannel();for (long count = fileChannel.size(); count > 0; ) {long transferred = fileChannel.transferTo(fileChannel.position(), count, fileChannelTo);count -= transferred;}}public static void copyFileByStream(File file, File fileTo) throws IOException {InputStream in = new FileInputStream(file);OutputStream out = new FileOutputStream(fileTo);byte[] buffer = new byte[1024];int length;while ((length = in.read(buffer)) > 0) {out.write(buffer, 0, length);}}}
运行结果
public static void main(String[] args) throws IOException {//文件的全路径String s1="G:\\dad\\hh.png";System.out.println(s1);//通过文件的全路径获取文件名System.out.println(s1.substring(s1.lastIndexOf("\\")).replace("\\",""));//通过文件的全路径获 文件名之前的路径System.out.println(s1.substring(0,s1.lastIndexOf("\\")));String s2="G:\\dada\\12.png";//这一步获取了文件夹名称 String s1="G:\\dad\\hh.png";--这获取的是文件名称File file1 = new File(s1.substring(0,s1.lastIndexOf("\\")));//获取文件名称String name = file1.getName();System.out.println("我是绝对路径"+file1.getAbsolutePath());System.out.println(name);File file2 = new File(s2);// copyFileByChannel(file1,file2);}
//从一个文件夹目录中拷贝文件到另一个文件夹目录
File srcFile = new File("G:\\dad\\hb99.jpg");File destDir = new File("G:\\dada");//在destDir下创建一个和srcFile同名的文件File destFile = new File(destDir,srcFile.getName());FileInputStream fis = new FileInputStream(srcFile);FileOutputStream fos = new FileOutputStream(destFile);byte[] bytes = new byte[1024];int len;while((len=fis.read(bytes))!=-1){//把读到的内容写入新文件中fos.write(bytes,0,len);}//释放资源fis.close();fos.close();
File srcFile = new File("G:\\dad\\hb99.jpg"); File destDir = new File("G:\\dada"); //在destDir下创建一个和srcFile同名的文件 File destFile = new File(destDir,srcFile.getName()); FileInputStream fis = new FileInputStream(srcFile); FileOutputStream fos = new FileOutputStream(destFile);byte[] bytes = new byte[1024]; int len; while((len=fis.read(bytes))!=-1){//把读到的内容写入新文件中fos.write(bytes,0,len); } //释放资源 fis.close(); fos.close();
要求定义一个方法,该方法能够实现文件夹的复制
public class Test09 {public static void main(String[] args) throws IOException {//要求定义一个方法,该方法能够实现文件夹的复制,考虑有子文件夹的情况File srcDir = new File("C:\\Users\\root\\Desktop\\test");File dest = new File("C:\\Users\\root\\Desktop\\test2");copyDir(srcDir,dest);}//File srcDir 源文件夹//File dest要复制到哪个目录public static void copyDir(File srcDir,File dest ) throws IOException {if(!(srcDir.exists()&&srcDir.isDirectory())){throw new RuntimeException("源文件夹必须存在并且是一个文件夹");}if(!dest.isDirectory()){throw new RuntimeException("目标文件夹必须是一个文件夹");}//1.在目标文件夹下创建一个和源文件夹同名的文件夹destDirFile destDir = new File(dest,srcDir.getName());destDir.mkdirs();//2.获取源文件夹下的所有子文件File[] files = srcDir.listFiles();if(files!=null){//3.遍历数组,复制每一个文件到目标文件夹destDir下for (File file : files) {if(file.isFile()){copyFile(file,destDir);}else {//复制文件夹copyDir(file,destDir);}}}}//源文件的路径 File srcFile//目标文件的存放目录路径 File destDirpublic static void copyFile(File srcFile,File destDir) throws IOException {//在destDir下创建一个和srcFile同名的文件File destFile = new File(destDir,srcFile.getName());//读取源文件 把读到的数据写入目标文件destFileFileInputStream fis = new FileInputStream(srcFile);FileOutputStream fos = new FileOutputStream(destFile);byte[] bytes = new byte[1024];int len;while((len=fis.read(bytes))!=-1){//把读到的内容写入新文件中fos.write(bytes,0,len);}//释放资源fis.close();fos.close();}
}
public class Test09 {
public static void main(String[] args) throws IOException {
//要求定义一个方法,该方法能够实现文件夹的复制,考虑有子文件夹的情况
File srcDir = new File("C:\\Users\\root\\Desktop\\test");
File dest = new File("C:\\Users\\root\\Desktop\\test2");
copyDir(srcDir,dest);
}
//File srcDir 源文件夹
//File dest要复制到哪个目录
public static void copyDir(File srcDir,File dest ) throws IOException {
if(!(srcDir.exists()&&srcDir.isDirectory())){
throw new RuntimeException("源文件夹必须存在并且是一个文件夹");
}
if(!dest.isDirectory()){
throw new RuntimeException("目标文件夹必须是一个文件夹");
}
//1.在目标文件夹下创建一个和源文件夹同名的文件夹destDir
File destDir = new File(dest,srcDir.getName());
destDir.mkdirs();
//2.获取源文件夹下的所有子文件
File[] files = srcDir.listFiles();
if(files!=null){
//3.遍历数组,复制每一个文件到目标文件夹destDir下
for (File file : files) {
if(file.isFile()){
copyFile(file,destDir);
}else {
//复制文件夹
copyDir(file,destDir);
}
}
}
}
//源文件的路径 File srcFile
//目标文件的存放目录路径 File destDir
public static void copyFile(File srcFile,File destDir) throws IOException {
//在destDir下创建一个和srcFile同名的文件
File destFile = new File(destDir,srcFile.getName());
//读取源文件 把读到的数据写入目标文件destFile
FileInputStream fis = new FileInputStream(srcFile);
FileOutputStream fos = new FileOutputStream(destFile);
byte[] bytes = new byte[1024];
int len;
while((len=fis.read(bytes))!=-1){
//把读到的内容写入新文件中
fos.write(bytes,0,len);
}
//释放资源
fis.close();
fos.close();
}
}