关于IO流在复制文件时出现java.io.FileNotFoundException: D:\xxx(拒绝访问。)

拒绝访问的问题

Exception in thread "main"java.io.FileNotFoundException: D:\xxx

(拒绝访问。)

at java.io.FileInputStream.open0(Native Method)

at java.io.FileInputStream.open(FileInputStream.java:195)

at java.io.FileInputStream.(FileInputStream.java:138)

at com.itheima_09Test.IOUtils.copyFile2Dir(IOUtils.java:13)

at com.itheima_09Test.Test_04.main(Test_04.java:31)

该异常主要出现在将文件或文件夹中文件复制到文件夹中,由于IO流是针对文件而言,所以没有权限访问文件目录

错误:FileOutputStream bos=newFileOutputStream(目标文件夹);//出错原因

案例一:(以下案例本应用try -catch出来异常,为了明了故直接抛出)

//要求:将srcFile文件复制到destDir目标文件夹中(不能改变源文件的名称)

public static void copyFile2Dir(File srcFile,File destDir) throws IOException{

//创建输入流对象 将源文件File对象传入其形参

FileInputStream fis= new FileInputStream(srcFile);

//获取目标路径的File对象,关键在于目标路径问题,注意复制访问

//只能是文件不能是文件夹 否则拒绝访问,getpath()得到具体带盘符的路径

//getName()得到的是文件的名称,两者字符串拼接就是具体的目标路径(目标文件//路径)

File file= new File(destDir.getPath()+File.separator+srcFile.getName());//****出错关键点******

//判断目标文件夹File对象(路径)是否存在,不存在则创建

if(!file.exists()){

destDir.mkdirs();

}

//创建输出流对象

FileOutputStream bos= new FileOutputStream(file);

//常规的读写复制

int len;

byte [] b= new byte[1024];

while((len=fis.read(b))!=-1){

bos.write(b, 0, len);

bos.flush();

}//关闭资源

bos.close();

fis.close();

System.out.println("复制成功");

}

案例二如下

// 要求:将srcDir文件夹中的所有文件(不包含子文件夹)复制

//到destDir目标文件夹中(不能改变源文件的名称)

public static void copyDir2Dir(File srcDir,File destDir) throws IOException{

ArrayListarr= new ArrayList<>();

getDataFiles(srcDir,arr);//调用方法将srcDir中所有的文件添加到集合中

for (int i = 0; i < arr.size(); i++) { //遍历集合将里面每个File文件读写复制到目标文件夹中

FileInputStream fis= new FileInputStream(arr.get(i));

File file= new File(destDir.getPath()+File.separator+arr.get(i).getName());//目标路径问题关键if(!file.exists()){ //判断目标文件夹是否存在,不存在则创建

destDir.mkdirs();

}

FileOutputStream bos= new FileOutputStream(file);;

int len;//常规的读写复制

byte [] b= new byte[1024];

while((len=fis.read(b))!=-1){

bos.write(b, 0, len);

bos.flush();

}//关闭资源

fis.close();

bos.close();

}

}

//方法功能:递归将file中文件都添加到集合中

public static void getDataFiles(File file,ArrayListlist){

if(file.isFile()){//如果file是文件

list.add(file);

}else{//如果file是文件夹

File[] listFiles = file.listFiles();//获取file中每一个文件,并遍历递归

for (File file2 : listFiles) {

getDataFiles( file2,list);

}

}

}

补充:还有一种情况出现java.io.FileNotFoundException异常就是源文件本来就不存在

java复制文件拒绝访问权限_关于IO流在复制文件时出现java.io.FileNotFoundException: D:\xxx (拒绝访问。) 拒绝访问的问题...相关推荐

  1. java 接口访问权限_详解Java之路(五) 访问权限控制

    在Java中,所有事物都具有某种形式的访问权限控制. 访问权限的控制等级从最大到最小依次为:public,protected,包访问权限(无关键词)和private. public,protected ...

  2. 复制assert目录文件到私有目录_每天学点之CentOS文件/目录的权限

    Linux中,最基本的两个命令:"cd"与"ls"."cd"是可以切换目录,如:cd /dev,就是进入到"根"目录下的 ...

  3. linux限制组访问权限,linux用户和组管理以及文件权限访问控制ACL策略

    01.通配符 文件通配符可以用来匹配符合条件的多个文件,方便批量管理文件. 通配符采用特定的符号,表示特定的含义,此符号称为元 meta 字符. 常见的通配符如下: * 匹配零个或多个字符,但不匹配 ...

  4. mac设置文件权限_如何在Mac上设置文件权限

    mac设置文件权限 Like all major operating systems, macOS allows you to restrict access to files using a com ...

  5. linux修改文件夹的访问权限,linux setfacl chmod g+s 修改文件夹和文件的默认访问权限和所属组...

    linux setfacl chmod g+s 修改文件夹和文件的默认访问权限和所属组 我们在创建一个文件夹或者一个文件的时候,希望集成父文件夹的访问权限和组 修改默认访问权限 setfacl 以及 ...

  6. java 输入流可以合并吗_Java 使用IO流实现大文件的分割与合并实例详解

    java 使用IO流实现大文件的分割与合并 文件分割应该算一个比较实用的功能,举例子说明吧比如说:你有一个3G的文件要从一台电脑Copy到另一台电脑, 但是你的存储设备(比如SD卡)只有1G ,这个时 ...

  7. java byte char io流_一文带你看懂JAVA IO流,史上最全面的IO教学

    原标题:一文带你看懂JAVA IO流,史上最全面的IO教学 一.IO流是什么 惯例引用百科的回答 流是一种抽象概念,它代表了数据的无结构化传递.按照流的方式进行输入输出,数据被当成无结构的字节序或字符 ...

  8. java 流压缩_java之IO流:压缩文件

    在java的学习中,IO流是一个避不开的话题.在java日常的学习和使用中,为了给不同的场景提供不同的用途,IO流拥有一个庞大的方法集合.虽然给使用者提供了极大的便利,但此同时也带来了学习时的异常冗杂 ...

  9. java IO流读取保存图片文件

    java  IO流读取保存图片文件 package io; import java.io.BufferedInputStream; import java.io.BufferedOutputStrea ...

  10. 利用IO流一次性读取文件中的所有内容,利用IO流下载文件

    利用IO流一次性读取文件中的所有内容 读取文件效率最快的方法就是一次全读进来,使用readline()之类的方法,可能需要反复访问文件,而且每次readline()都会调用编码转换,降低了速度,所以, ...

最新文章

  1. Linux下使用OTL操作mysql数据库
  2. 使用gradle插件发布项目到nexus中央仓库
  3. js使浏览器窗口最大化(适用于IE的方法)
  4. C++/OpenCV:将数据保存到xml、yaml / 从xml、yaml读取数据
  5. ApacheCN JavaScript 译文集(二) 20211123 更新
  6. python 闭包_一起看流畅的python:函数装饰器和闭包
  7. 同步手机文件到家庭服务器,同步文件到服务器
  8. 绝缘检测是什么? 绝缘检测原理 绝缘检测检测的是什么?那个量?电压?电流?电阻?
  9. 嵌入式单片机该如何选型?
  10. 阿里面试整个流程(已OC)
  11. 计算机通信网自学笔记(2)
  12. win10休眠_最牛的win10优化设置方法大全
  13. 百度自然语言处理开放接口使用代码
  14. Again! There are tons of wrong answers!
  15. 小熊、九阳、苏泊尔,小家电玩家们乱了阵脚?
  16. PMP常考知识点核对单-10.沟通管理
  17. 对Xcode7真机调试的无力吐槽
  18. RXJAVA-FlatMap
  19. Comparable和Comparator接口
  20. 铁甲雄兵显示服务器维护,铁甲雄兵正在获取服务器地址

热门文章

  1. 电脑经验小总结(原创)
  2. vfp报表纸张设置_vfp教程之Visual Foxpro生成任意打印字段报表的实现
  3. 【数据分析】《深入浅出统计学》要点总结
  4. 基于slicer开发(简化功能与插件开发)
  5. 《21天学通Java(第6版)》—— 1.7 问与答
  6. H5游戏《守塔兵团》你必须要知道的4件事
  7. c语言二级java难吗_计算机二级考JAVA还是C?
  8. 全志平台ov2710 sensor驱动调试记录
  9. Matlab基础入门手册(第一章:入门)
  10. Docker安装Tomcat7