309 复制单级文件夹

36 篇文章 0 订阅

309 复制单级文件夹

 

单级文件夹,就是内部不含文件夹的文件夹,【文件夹套文件夹体系】的最底层

多级文件夹,内部包含文件夹的文件夹,【文件夹套文件夹体系】的非最底层

【思路】

(准备)(新建一个空文件夹,C:\develper\309)

(因为要复制目录、图片,因此采用字节流而不是字符流)

  1. 创建 数据源目录File对象
  2. 获取 数据源目录File对象的名称(复用原文件名)
  3. 创建 目的地目录File对象
  4. 判断 目的地目录的File是否存在,不存在则创建
  5. 获取 数据源目录下的所有文件的File数组
  6. 遍历 File数组,得到每一个File对象(这就是数据源)(以图片文件为例)
  7. 获取 数据源文件File对象的文件名
  8. 创建 目的地文件File对象,路径名包含文件名
  9. 复制 文件

【报错了】

File[] fileArray = srcFolder.listFiles();报错NullPointerException,应该是因为srcFolder目前是空文件夹,没有文件夹或文件

srcFolder应该是空的吗?回看视频确认一下

视频里是itcast文件夹,内含3个文件。。。

故修改Prepare类,在srcFolder内补充3个文件应该就可以了,

还是不行,还是那个报错,

回看视频检查代码

好了,是操作代码里路径没更新为修改后的路径

【关键语句】

File.mkdir()

新建文件夹

File.createNewFile()

新建文件

File[] arrayName=fileName.listFiles()

创建File对象数组

(对象也可以作为元素组成数组)

(listFiles方法返回目录中的文件和目录的File对象数组)

for(File fileName:arrayName){

  String sName=fileName.getName();

  File fileName=new File(fileName,sName);

  methodName(fileName,fileName);

}

复制单级目录的全部数据

for(类型是对象 对象名:数组名){

  String sName=fileName.getName();获取文件名

  File fileName=new File(fileName,sName);使用原名称创建新文件

  methodName(fileName,fileName);调用自己定义的方法,给的参数分别是数据源File对象、目的地File对象

},

byte[] bys=new byte[1024];

int i;

while((len=bis.read())!=-1){

  bos.write(bys,0,i);

}

(这是在methodName方法体内的)(使用数组方式)读and写数据源

File.mkdir新建文件夹

File.createNewFile新建文件

File.mkdir(),新建文件夹

File[] arrayName=fileName.listFiles(),创建File对象数组

--------------------------------------------------------------

package e309;

import java.io.File;

import java.io.IOException;

public class Prepare {

    public static void main(String[] args) throws IOException {

        File f = new File("C:\\develper\\309");

        f.mkdir();

        File f1 = new File("C:\\develper\\309\\jj.jpg");

        f1.createNewFile();

        File f2 = new File("C:\\develper\\309\\jj.png");

        f2.createNewFile();

        File f3 = new File("C:\\develper\\309\\jj.txt");

        f3.createNewFile();

    }

}

--------------------------------------------------------------

package e309;

import java.io.*;

public class CopyEmptyFolderDemo {

    public static void main(String[] args) throws IOException {

        File srcFolder = new File("C:\\develper\\309");

//          数据源

        String srcFolderName = srcFolder.getName();

//          原文件名

        File destFolder = new File("myCharStream\\src\\e309", srcFolderName);

        if (!destFolder.exists()) {

            destFolder.mkdir();

        }

//          判断目的地目录是否存在,不存在则复制

        File[] fileArray = srcFolder.listFiles();//!!!

//          创建file数组,listFiles()返回目录中的文件和目录的File对象数组

        for (File srcFile : fileArray) {

            String srcFileName = srcFile.getName();//???no need

            File destFile = new File(destFolder, srcFileName);

            copyFile(srcFile, destFile);//调用还没有定义的方法,方法名飘红报错,这时选中方法名按alt enter可快捷生成方法声明语句

        }

//          调用copyFile方法 读数据源,写入目的地 实现复制文件

    }

    private static void copyFile(File srcFile, File destFile) throws IOException {

        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcFile));//fis的数据源可以是字符串的路径,也可以是一个标识符

        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(destFile));

        byte[] bys = new byte[1024];

        int len;

        while ((len = bis.read()) != -1) {

            bos.write(bys, 0, len);

        }

        bis.close();

        bos.close();

    }

//          定义copyFile方法 读数据源,写入目的地

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值