package com.io;

 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.FileWriter;
 import java.io.InputStream;
 import java.io.PrintWriter;

 public  class  FileOperate  {
        /**
          *  新建目录
          *  @param  folderPath  String  如  c:/fqf
          *  @return  boolean
          */
        public static void  newFolder(String  folderPath)  {
            try  {
                String  filePath  =  folderPath;
                File  myFilePath  =  new File(filePath);
                if  (!myFilePath.exists())  {
                    myFilePath.mkdir();
                }
            }
            catch  (Exception  e)  {
                System.out.println("新建目录操作出错");
                e.printStackTrace();
            }
        }  

        /**
          *  新建文件
          *  @param  filePathAndName  String  文件路径及名称  如c:/fqf.txt
          *  @param  fileContent  String  文件内容
          *  @return  boolean
          */
        public static void  newFile(String  filePathAndName,  String  fileContent)  {  

            try  {
                String  filePath  =  filePathAndName;
                File  myFilePath  =  new  File(filePath);
                if  (!myFilePath.exists())  {
                    myFilePath.createNewFile();
                    System.out.println("创建文件成功");
                }
                FileWriter  resultFile  =  new  FileWriter(myFilePath);
                PrintWriter  myFile  =  new  PrintWriter(resultFile);
                myFile.println(fileContent);
                System.out.println("写入文件成功");
                resultFile.close();
            }
            catch  (Exception  e)  {
                System.out.println("新建文件操作出错");
                e.printStackTrace();
            }
        }  

        /**
          *  删除文件
          *  @param  filePathAndName  String  文件路径及名称  如c:/fqf.txt
          *  @param  fileContent  String
          *  @return  boolean
          */
        public static  void  delFile(String  filePathAndName)  {
            try  {
                File myDelFile  = new File(filePathAndName);
                myDelFile.delete();
                System.out.println("删除文件成功!");
            }
            catch  (Exception  e)  {
                System.out.println("删除文件操作出错");
                e.printStackTrace();
            }
        }  

        /**
          *  删除文件夹
          *  @param  filePathAndName  String  文件夹路径及名称  如c:/fqf
          *  @param  fileContent  String
          *  @return  boolean
          */
        public  void  delFolder(String  folderPath)  {
            try  {
                delAllFile(folderPath);  //删除完里面所有内容
                File  myFilePath  =  new File(folderPath);
                myFilePath.delete();  //删除空文件夹
            }
            catch  (Exception  e)  {
                System.out.println("删除文件夹操作出错");
                e.printStackTrace();
            }
        }  

        /**
          *  删除文件夹里面的所有文件
          *  @param  path  String  文件夹路径  如  c:/fqf
          */
        public  void  delAllFile(String  path)  {
            File  file  =  new  File(path);
            if  (!file.exists())  {
                return;
            }
            if  (!file.isDirectory())  //判读此抽象路径名表示的文件存在且 是一个目录
            {
                return;
            }
            String[]  tempList  =  file.list();
            File  temp  =  null;
            for  (int  i  =  0;  i  <  tempList.length;  i++)  {
                if  (path.endsWith(File.separator))  {
                    temp  =  new  File(path  +  tempList[i]);
                }
                else  {
                    temp  =  new  File(path  +  File.separator  +  tempList[i]);
                }
                if  (temp.isFile())  {
                    temp.delete();
                }
                if  (temp.isDirectory())  {
                    delAllFile(path+"/"+  tempList[i]);//先删除文件夹里面的文件
                    delFolder(path+"/"+  tempList[i]);//再删除空文件夹
                }
            }
        }  

        /**
          *  复制单个文件
          *  @param  oldPath  String  原文件路径  如:c:/fqf.txt
          *  @param  newPath  String  复制后路径  如:f:/fqf.txt
          *  @return  boolean
          */
        public  void  copyFile(String  oldPath,  String  newPath)  {
            try  {
                int  bytesum  =  0;
                int  byteread  =  0;
                File  oldfile  =  new  File(oldPath);
                if  (oldfile.exists())  {  //文件存在时
                    InputStream  inStream  =  new  FileInputStream(oldPath);  //读入原文件
                    FileOutputStream  fs  =  new  FileOutputStream(newPath);
                    byte[]  buffer  =  new  byte[1444];
                    int  length;
                    while  (  (byteread  =  inStream.read(buffer))  !=  -1)  {
                        bytesum  +=  byteread;  //字节数  文件大小
                        System.out.println(bytesum);
                        fs.write(buffer,  0,  byteread);
                    }
                    inStream.close();
                }
            }
            catch  (Exception  e)  {
                System.out.println("复制单个文件操作出错");
                e.printStackTrace();
            }
        }  

        /**
          *  复制整个文件夹内容
          *  @param  oldPath  String  原文件路径  如:c:/fqf
          *  @param  newPath  String  复制后路径  如:f:/fqf/ff
          *  @return  boolean
          */
        public  void  copyFolder(String  oldPath,  String  newPath)  {
            try  {
                (new  File(newPath)).mkdirs();  //如果文件夹不存在  则建立新文件夹
                File  a=new  File(oldPath);
                String[]  file=a.list();
                File  temp=null;
                for  (int  i  =  0;  i  <  file.length;  i++)  {
                    if(oldPath.endsWith(File.separator)){
                        temp=new  File(oldPath+file[i]);
                    }
                    else{
                        temp=new  File(oldPath+File.separator+file[i]);
                    }
                    if(temp.isFile()){
                        FileInputStream  input  =  new  FileInputStream(temp);
                        FileOutputStream  output  =  new  FileOutputStream(newPath  +  "/"  +
                                (temp.getName()).toString());
                        byte[]  b  =  new  byte[1024  *  5];
                        int  len;
                        while  (  (len  =  input.read(b))  !=  -1)  {
                            output.write(b,  0,  len);
                        }
                        output.flush();
                        output.close();
                        input.close();
                    }
                    if(temp.isDirectory()){//如果是子文件夹
                        copyFolder(oldPath+"/"+file[i],newPath+"/"+file[i]);
                    }
                }
            }
            catch  (Exception  e)  {
                System.out.println("复制整个文件夹内容操作出错");
                e.printStackTrace();
            }
        }  

        /**
          *  移动文件到指定目录
          *  @param  oldPath  String  如:c:/fqf.txt
          *  @param  newPath  String  如:d:/fqf.txt
          */
        public  void  moveFile(String  oldPath,  String  newPath)  {
            copyFile(oldPath,  newPath);
            delFile(oldPath);
        }  

        /**
          *  移动文件到指定目录
          *  @param  oldPath  String  如:c:/fqf.txt
          *  @param  newPath  String  如:d:/fqf.txt
          */
        public  void  moveFolder(String  oldPath,  String  newPath)  {
            copyFolder(oldPath,  newPath);
            delFolder(oldPath);  

        }  

            // 拷贝文件
        private void copyFile2(String source, String dest) {
        try {
            File in = new File(source);
            File out = new File(dest);
            FileInputStream inFile = new FileInputStream(in);
            FileOutputStream outFile = new FileOutputStream(out);
            byte[] buffer = new byte[1024];
            int i = 0;
            while ((i = inFile.read(buffer)) != -1) {
            outFile.write(buffer, 0, i);
        }//end while
            inFile.close();
            outFile.close();
        }//end try
        catch (Exception e) {

        }//end catch
        }//end copyFile
 }

java文件IO操作的更多相关文章

  1. Java文件IO操作应该抛弃File拥抱Paths和Files

    Java7中文件IO发生了很大的变化,专门引入了很多新的类: import java.nio.file.DirectoryStream;import java.nio.file.FileSystem; ...

  2. Java文件IO操作应该抛弃File拥抱Path和Files

    Java7中文件IO发生了很大的变化,专门引入了很多新的类: import java.nio.file.DirectoryStream;import java.nio.file.FileSystem; ...

  3. Java 文件 IO 操作

    window 路径分割符: \ 表示 windows 系统文件目录分割符 java 代码在 windows 下写某个文件的话需要下面的方式 D:\\soft\\sdclass.txt  其中一个单斜杠 ...

  4. java安全编码指南之:文件IO操作

    目录 简介 创建文件的时候指定合适的权限 注意检查文件操作的返回值 删除使用过后的临时文件 释放不再被使用的资源 注意Buffer的安全性 注意 Process 的标准输入输出 InputStream ...

  5. 文件IO操作

    前言 本文介绍使用java进行简单的文件IO操作. 操作步骤 - 读文件 1. 定义一个Scanner对象 2. 调用该对象的input函数族进行文件读取 (参见下面代码) 3. 关闭输入流 说明:其 ...

  6. 1.5 JAVA的IO操作

    1.5 JAVA的IO操作 参考链接:https://www.runoob.com/java/java-files-io.html 一.JAVA的IO操作 由于JAVA引用外界的数据,或是将自身的数据 ...

  7. Java - 文件(IO流)

    Java - 文件 (IO)   流的分类:     > 文件流:FileInputStream | FileOutputStream | FileReader | FileWriter     ...

  8. 树莓派学习笔记——使用文件IO操作GPIO SysFs方式

    0 前言     本文描写叙述假设通过文件IO sysfs方式控制树莓派 GPIO端口.通过sysfs方式控制GPIO,先訪问/sys/class/gpio文件夹,向export文件写入GPIO编号, ...

  9. Java的IO操作中有面向字节(Byte)和面向字符(Character)两种方式

    解析:Java的IO操作中有面向字节(Byte)和面向字符(Character)两种方式.面向字节的操作为以8位为单位对二进制的数据进行操作,对数据不进行转换,这些类都是InputStream和Out ...

随机推荐

  1. 访问图像中的像素[OpenCV 笔记16]

    再更一发好久没更过的OpenCV,不过其实写到这个部分对计算机视觉算法有所了解的应该可以做到用什么查什么了,所以后面可能会更的慢一点吧,既然开了新坑,还是机器学习更有研究价值吧... 图像在内存中的存 ...

  2. (poj)1502 MPI Maelstrom

    题目链接:http://poj.org/problem?id=1502 Description BIT has recently taken delivery of their processor A ...

  3. 超强的ACM题目类型总结

    转:初期: 一.基本算法:       (1)枚举. (poj1753,poj2965)     (2)贪心(poj1328,poj2109,poj2586)     (3)递归和分治法.       ...

  4. JavaScript 作用域和作用域链

    作用域是JavaScript最重要的概念之一,想要学好JavaScript就需要理解JavaScript作用域和作用域链的工作原理.今天这篇文章对JavaScript作用域和作用域链作简单的介绍,希望 ...

  5. java oop

    /** 多层嵌套内部类, 调用时要层层往下调用 格式: 外部类.内部类1.内部类2 对象名 = new 外部类().new 内部类1().new 内部类2(); 对象名.属性/方法名(); */ cl ...

  6. 存储过程/游标/mysql 函数

    存储过程和函数(存储在 mysql数据库中的 proc表,所以检查有没有这个表)存储过程是一种存储程序(如正规语言里的子程序一样),mysql支持有两种:存储过程,在其他SQL语句中可以返回值的函数( ...

  7. 点击UserControl中的按钮将值传给winform页面

    源码下载地址:http://download.csdn.net/detail/dora_zhh/7456521 1.如图所示,点击选择按钮弹出用户控件UserControl 2.点击确定按钮,将值传给 ...

  8. thinkphp验证码的实现

    两种验证码验证实现,一种直接在form表单提交按钮实现验证,一种使用ajax传递参数实现验证: 1.直接在form表单提交按钮实现验证,在控制器VerifyController.class.php中写 ...

  9. (转)HTTP协议(3)

    一.概念 协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则,超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器. ...

  10. Android LruCache究竟是什么

    源码: /frameworks/base/core/java/android/util/LruCache.java 文件开篇注释如下: A cache that holds strong refere ...