IO中那些流之文件复制

来源:互联网 发布:js怎样仿写shift 编辑:程序博客网 时间:2024/05/21 16:52

上一篇已经简单介绍了IO流,其实阿帕奇已经提供了很多第三方jar包,已经封装了IO流的功能,为我们简化了不少代码。但是我们了解一些原理,用起这些方法来也会得心应手的。

IO流实现将一个文件夹拷贝到另一个文件夹:

             思路:1.先对文件进行读取,然后在将文件写出

                         2 文件夹是不能复制的,只能对里面的文件进行复制

                         3.对文件夹我们可以进行创建。

     有的需要创建本地路径,   本地路径就是 创建Fie f=new File("number.txt");//任意一个文件名即可

       .

public static void copy(File source,File ss){  //这个是为了创建文件  int count=0;  File des=new File(ss,source.getName());  des.mkdirs();//G:\\英语\\学习  File[] listFiles = source.listFiles();  FileInputStream fis=null;  FileOutputStream fos=null;  for (File file : listFiles) {if(file.isDirectory()){copy(file,des);   //进行递归,遍历里面的文件}else{                    //如果是文件向下执行try {//进行文件复制fis=new FileInputStream(file); //H:\\学习fos=new FileOutputStream(new File(des,file.getName()));//进行文件复制时源文件与目标文件文件结尾是相同的 byte[] b=new byte[1024];  //是以字节数组进行读取,比起一个字节一个字节的读,加快了速度int len=0;while((len=fis.read(b))!=-1){fos.write(b,0,len);}} catch (Exception e) {// TODO: handle exception}finally {try {fos.close();fis.close();}


如果这些不懂也没有关系,因为一些第三方jar包已经提供了这些功能。

     引进commons-io.jar
     1.加入classpath的第三方jar包内的class文件才能在项目中使用,创建lib文件夹,将commons-io.jar拷贝到lib文件夹。

     2.右键点击commons-io.jar,Build Path→Add to Build Pat

     它提供了一个处理文件操作的类:FilenameUtils。因为里面定义的是静态方法,可以直接使用类里面的方法。


常用方法:

         getExtension(String path) 获取文件的扩展名

         getName()             获取文件名

         isExtention    判断fileName是否以某个后缀名结尾


        readFileToString(File file):读取文件内容,并返回一个String;
        writeStringToFile(File file,String content):将内容content写入到file中;
        copyDirectoryToDirectory(File srcDir,File destDir);文件夹复制
        copyFile(File srcFile,File destFile);文件夹复制


     在项目中我们可能会涉及到上传文档的问题,有的会有要求,上传的文档不能超过多大,我们需要知道1KB就是1024。如果想要控制上传的扩展名,我们可以用getExtension来获取。


0 0
原创粉丝点击