• java——操作文件


    Java文件操作,共实现了文件复制(单个文件和多层目录文件),文件移动(单个文件和多层目录文件),文件删除(单个文件和多层目录文件),文件压缩 (单个文件),文件解压(单个文件),文件分割(将一个大文件分割为若干个小文件),文件组合(将多个文件组合到一个文件中)。

    package ttstudy.io;   

    import java.io.*;   

    import java.util.*;   

    import java.util.zip.*;   

    public class FileManager {   

        private static ArrayList<File> lsFiles = new ArrayList<File>();   

        private static FileInputStream fis = null;   

        private static FileOutputStream fos = null;   

        /**  

         * list all files  

         * @param path  

         * @return ArrayList<File>  

         * @throws FileNotFoundException  

         */  

        public static ArrayList<File> listAllFiles(String path) throws FileNotFoundException {   

            File file = new File(path);   

            File[] f = file.listFiles();   

            for(int i=0; i<f.length; i++) {   

                lsFiles.add(f[i]);   

                //If the current file is a directory, Recursion listed catalogue of the files   

                if(f[i].isDirectory()) {   

                    listAllFiles(f[i].getAbsolutePath());   

                }   

            }   

            return lsFiles;   

        }   

        /**  

         * copy srcFile to desFile  

         * @param srcFile  

         * @param desFile  

         * @throws FileNotFoundException  

         */  

        public static void copyFile(String srcFile, String desFile) throws FileNotFoundException, IOException {   

            fis = new FileInputStream(new File(srcFile));   

            fos = new FileOutputStream(new File(desFile));   

            byte[] buf = new byte[1024];   

            int len = 0;   

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

                fos.write(buf, 0, len);   

            }   

            fos.close();   

            fis.close();   

        }   

        /**  

         * copy all files in srcFile to desFile  

         * @param srcFile  

         * @param desFile  

         * @throws FileNotFoundException  

         */  

        public static void copyFiles(String srcFile, String desFile) throws FileNotFoundException, IOException {   

            ArrayList<File> lsFiles = listAllFiles(srcFile);   

            for(int i=0; i<lsFiles.size(); i++) {   

                File curFile = lsFiles.get(i);   

                if(curFile.isDirectory()) {   

                    new File(desFile+curFile.getAbsolutePath().substring(srcFile.length())).mkdir();   

                } else {   

                    copyFile(curFile.getAbsolutePath(), new File(desFile+curFile.getAbsolutePath().substring(srcFile.length())).getAbsolutePath());   

                }   

            }   

        }   

        /**  

         * Split a file into multiple files  

         * @param srcFile  

         * @param desDir   分割后文件存放的位置,是一个目录  

         * @param n  

         * @return  

         * @throws FileNotFoundException  

         */  

        public static File[] splitFile(String srcFile, String desDir, int part) throws FileNotFoundException, IOException {   

            File[] rsFile = new File[part];   

            File f = new File(srcFile);   

            long partLen = f.length()/part;     //part等分   

            int perLen = 2;   

            if(partLen > 1024) {   

                perLen = 512;   

            } else {   

                perLen = 2;   

            }   

            byte[] buf = new byte[perLen];   

            fis = new FileInputStream(f);   

            for(int i=0; i<part; i++) {   

                int pos = f.getName().lastIndexOf('.');   

                File partFile = new File(desDir+"/"+f.getName().substring(0, pos)+(i+1)+f.getName().substring(pos));   

                fos = new FileOutputStream(partFile);   

                rsFile[i] = partFile;   

                long m = partLen/perLen;   

                for(int j=0; j<m; j++) {   

                    int len = 0;   

                    if((len=fis.read(buf)) != -1) {   

                        fos.write(buf, 0, len);   

                    }   

                }   

            }   

            //由于整除原因,可能导致最后一部分没有写入到文件中,因此需要补充下面内容   

            int nn= 0;   

            if((nn=fis.read(buf)) != -1) {   

                fos.write(buf, 0, nn);   

            }   

            fos.close();   

            fis.close();   

            return rsFile;   

        }   

        /**  

         * Combination of multiple files into one file  

         * @param srcFile  

         * @param desFile  

         * @return  

         * @throws FileNotFoundException  

         * @throws IOException  

         */  

        public static File mergeFile(File[] srcFile, String desFile) throws FileNotFoundException, IOException {   

            File rsFile = new File(desFile);   

            fos = new FileOutputStream(new File(desFile));   

            byte[] buf = new byte[1024];   

            int len = 0;   

            for(int i=0; i<srcFile.length; i++) {   

                fis = new FileInputStream(srcFile[i]);   

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

                    fos.write(buf, 0, len);   

                }   

                fis.close();   

            }   

            if(fos != null) {   

                fos.close();   

            }   

            if(fis != null) {   

                fis.close();               

            }   

            return rsFile;   

        }   

        /**  

         * delete a file  

         * @param srcFile  

         * @throws FileNotFoundException  

         * @throws IOException  

         */  

        public static void deleteFile(String srcFile) throws FileNotFoundException, IOException {   

            new File(srcFile).delete();   

        }   

        /**  

         * Delete all files in srcFile,This is too difficult for me  

         * @param srcFile  

         * @throws FileNotFoundException  

         * @throws IOException  

         */  

        public static void deleteFiles(String srcFile) throws FileNotFoundException, IOException {   

            LinkedList<File> dirs = new LinkedList<File>();    

            dirs.add(new File(srcFile));   

            while(dirs.size() > 0){   

                File currentDir = (File)dirs.getFirst();   

                File[] files = currentDir.listFiles();   

                boolean emptyDir = true;   

                for(int i = 0 ;i < files.length;i++) {   

                    if (files[i].isFile()) {   

                        files[i].delete();   

                    } else {   

                        dirs.addFirst(files[i]);   

                        emptyDir = false;   

                    }   

                }   

                if (emptyDir){   

                    currentDir.delete();   

                    dirs.removeFirst();   

                }   

            }   

        }   

        /**  

         * move srcFile to desFile  

         * @param srcFile  

         * @param desFile  

         * @throws FileNotFoundException  

         */  

        public static void moveFile(String srcFile, String desFile) throws FileNotFoundException, IOException {   

            copyFile(srcFile, desFile);   

            new File(srcFile).delete();   

        }   

        /**  

         * move srcFile to desFile  

         * @param srcFile  

         * @param desFile  

         * @throws FileNotFoundException  

         */  

        public static void moveFiles(String srcFile, String desFile) throws FileNotFoundException, IOException {   

            copyFiles(srcFile, desFile);   

            deleteFiles(srcFile);   

        }   

        /**  

         * compress files  

         * @param srcFile  

         * @param rarFile  

         * @throws FileNotFoundException  

         * @throws IOException  

         */  

        public static void compressFile(String _unZipFile, String _zipFile) throws FileNotFoundException, IOException {   

            File srcFile = new File(_unZipFile);   

            File zipFile = new File(_zipFile);   

            DataInputStream dis = new DataInputStream(new FileInputStream(srcFile));   

            if(!zipFile.exists()) {   

                File zipdir = new File(zipFile.getParent());   

                if(!zipdir.exists()) {   

                    zipdir.mkdirs();   

                }   

                zipFile.createNewFile();   

            }   

            ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zipFile));   

            zos.setMethod(ZipOutputStream.DEFLATED);   

            ZipEntry ze = new ZipEntry(srcFile.getName());   

            zos.putNextEntry(ze);   

            DataOutputStream dos = new DataOutputStream(zos);   

               

            byte[] buf = new byte[2048];   

            int len=0;   

            while((len=dis.read(buf)) != -1) {   

                dos.write(buf, 0, len);   

            }   

            dos.close();   

            dis.close();   

        }   

        /**  

         * uncompress files  

         * @param rarFile  

         * @param srcFile  

         * @throws FileNotFoundException  

         * @throws IOException  

         */  

        @SuppressWarnings("unchecked")   

        public static void unCompressFile(String _zipFile, String _unZipDir) throws FileNotFoundException, IOException {   

            File unZipFile = new File("_unZipFile");   

            if(! unZipFile.exists()) {   

                unZipFile.mkdirs();   

            }   

            ZipEntry ze = null;   

            ZipFile zf = new ZipFile(new File(_zipFile));   

            Enumeration<ZipEntry> en = (Enumeration<ZipEntry>)zf.entries();   

            if(en.hasMoreElements()) {   

                ze = (ZipEntry)en.nextElement();   

            }   

            unZipFile = new File(_unZipDir+File.separator+ze.getName());   

            if(! unZipFile.exists()) {   

                unZipFile.createNewFile();   

            }   

            DataInputStream dis = new DataInputStream(zf.getInputStream(ze));   

            DataOutputStream dos = new DataOutputStream(new FileOutputStream(unZipFile));   

            int len = 0;   

            byte[] buf = new byte[2048];   

            while((len=dis.read(buf)) != -1) {   

                dos.write(buf, 0, len);   

            }   

            dos.close();   

            dis.close();   

        }   

        /**  

         *   

         * @param args  

         */  

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

            //          ArrayList<File> lsFiles = listAllFiles("D:/temp");   

            //          for(int i=0; i<lsFiles.size(); i++) {   

            //              System.out.println(lsFiles.get(i).getPath());   

            //          }   

            //          System.out.println(lsFiles.size());   

            //          //copyFile("D:/temp/我的桌面.jpg","D:/temp/test.jpg");   

            //          try {   

            //              copyFiles("D:/temp","D:/tt");   

            //          } catch (IOException e) {   

            //              // TODO Auto-generated catch block   

            //              e.printStackTrace();   

            //          }   

            //          //moveFile("D:/temp/我的桌面.jpg","D:/temp/test.jpg");   

                        //moveFiles("D:/ttt","D:/temp");   

            //          File f = new File("D:/temp/软件0820   9308036    .王颜涛.doc");   

            //          System.out.println(f.getName());   

    //      try {   

    //          splitFile("D:/temp/tttt.rar", "D:/temp/test", 3);   

    //      } catch (IOException e) {   

    //          e.printStackTrace();   

    //      }   

    //      File[] f = {new File("D:/temp/test/tttt1.rar"), new File("D:/temp/test/tttt2.rar"), new File("D:/temp/test/tttt3.rar")};   

    //      try {   

    //          mergeFile(f, "D:/temp/test.rar");   

    //      } catch (IOException e) {   

    //          // TODO Auto-generated catch block   

    //          e.printStackTrace();   

    //      }   

            //deleteFiles("D:/temp/tttt");         

            compressFile("D:/temp/bb.pdf","D:/temp/bb.rar");   

            //unCompressFile("D:/temp/test.rar","D:/temp/test2");   

        }   

    }  

     ===按行读取文件内容

    File file =new File("D:Developmentweblogicuser_projectsdomainscffg_domainautodeploycffg_p2papplicationPrintfxRepayDetail.html");
      StringBuffer tempStr=new StringBuffer();
      String str=null;
      try {
       BufferedReader br=new BufferedReader(new FileReader(file));
       while((str=br.readLine())!=null){
        tempStr.append(str);
       }
       br.close();
      } catch (Exception e) {
       log.error("获取原始模板错误!",e);
      }
      return tempStr.toString();

    //获取项目部署路径

    private String getMainPath(){
      File f=new File(getClass().getClassLoader().getResource("/").getPath());
      StringBuffer sb=new StringBuffer(f.getParentFile().getParent());
      sb.append(File.separator);
      return sb.toString();
     }

  • 相关阅读:
    解决EXC_BAD_ACCESS错误的一种方法--NSZombieEnabled
    关于deselectRowAtIndexPath
    CGRectInset、CGRectOffset、等对比整理
    代码设置UITableViewCell 各个组件间距
    UITableViewCell计算行高
    设置UITableView中UIImage的大小
    UILbale自动换行
    根据字体多少使UILabel自动调节尺寸
    ios通过url下载显示图片
    Python【requests】第三方模块
  • 原文地址:https://www.cnblogs.com/Defry/p/4461630.html
Copyright © 2020-2023  润新知