FileUtil

简介:
[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. package com.wiseweb.util;  
  2.   
  3. import java.io.BufferedReader;  
  4. import java.io.File;  
  5. import java.io.FileInputStream;  
  6. import java.io.FileNotFoundException;  
  7. import java.io.FileOutputStream;  
  8. import java.io.IOException;  
  9. import java.io.InputStream;  
  10. import java.io.InputStreamReader;  
  11. import java.io.UnsupportedEncodingException;  
  12. import java.util.ArrayList;  
  13. import java.util.List;  
  14. import java.util.regex.Matcher;  
  15. import java.util.regex.Pattern;  
  16.   
  17. public class FileUtil {  
  18.   
  19.     // /**  
  20.     // * 获取获取系统根目录下xml文件的路径的方法;  
  21.     // */  
  22.     // @SuppressWarnings("unused")  
  23.     // private String projectFilePath = new File("").getAbsolutePath()  
  24.     // + "\\config.xml";  
  25.     //  
  26.     // /**  
  27.     // * 获取Web项目发布后(源码中src下)classes目录下某个xml路径的方法;  
  28.     // */  
  29.     // @SuppressWarnings("unused")  
  30.     // private String srcFilePath = getClass().getClassLoader().getResource(  
  31.     // "config.xml").getPath();  
  32.   
  33.     File file = null;  
  34.     boolean flag = false;  
  35.   
  36.     /**  
  37.      * 写入txt文件,可以在原文件内容的基础上追加内容(并判断目录是否存在,不存在则生成目录)  
  38.      *   
  39.      * @param value  
  40.      *            写入文件内容  
  41.      * @param fileCatage  
  42.      *            文件父目录;  
  43.      * @param fileName  
  44.      *            文件名字;  
  45.      * @param code  
  46.      *            文件的编码;  
  47.      * @throws IOException  
  48.      */  
  49.     public void WriteFile(String value, String fileCatage, String fileName,  
  50.             String code) {  
  51.         File file = null;  
  52.         try {  
  53.             file = new File(fileCatage);  
  54.             if (!file.isDirectory())  
  55.                 file.mkdir();  
  56.             else {  
  57.                 file = new File(fileCatage + fileName);  
  58.                 if (!file.exists())  
  59.                     file.createNewFile();  
  60.                 FileOutputStream out = new FileOutputStream(file, true);  
  61.                 out.write(value.getBytes(code));  
  62.                 out.close();  
  63.             }  
  64.         } catch (IOException e) {  
  65.             e.printStackTrace();  
  66.         }  
  67.     }  
  68.   
  69.     /***  
  70.      * 覆盖原来的内容;  
  71.      *   
  72.      * @param filePath  
  73.      *            文件的路径  
  74.      * @param content  
  75.      *            保存的内容;  
  76.      * @return  
  77.      */  
  78.     public boolean saveFile(String filePath, String content) {  
  79.         boolean successful = true;  
  80.         FileOutputStream fout = null;  
  81.         try {  
  82.             fout = new FileOutputStream(new File(filePath), false);  
  83.             fout.write(content.getBytes());  
  84.         } catch (FileNotFoundException e1) {  
  85.             successful = false;  
  86.         } catch (IOException e) {  
  87.             successful = false;  
  88.         } finally {  
  89.             if (fout != null) {  
  90.                 try {  
  91.                     fout.close();  
  92.                 } catch (IOException e) {  
  93.                 }  
  94.             }  
  95.         }  
  96.         return successful;  
  97.     }  
  98.   
  99.     /**  
  100.      * 删除文件的综合操作( 根据路径删除指定的目录或文件,无论存在与否)  
  101.      *   
  102.      * @param sPath  
  103.      *            要删除的目录或文件  
  104.      *@return 删除成功返回 true,否则返回 false。  
  105.      */  
  106.     public boolean DeleteFolder(String sPath) {  
  107.         flag = false;  
  108.         file = new File(sPath);  
  109.         // 判断目录或文件是否存在  
  110.         if (!file.exists()) { // 不存在返回 false  
  111.             return flag;  
  112.         } else {  
  113.             // 判断是否为文件  
  114.             if (file.isFile()) { // 为文件时调用删除文件方法  
  115.                 return deleteFile(sPath);  
  116.             } else { // 为目录时调用删除目录方法  
  117.                 return deleteDirectory(sPath);  
  118.             }  
  119.         }  
  120.     }  
  121.   
  122.     /**  
  123.      * 删除单个文件  
  124.      *   
  125.      * @param sPath  
  126.      *            被删除文件的文件名  
  127.      * @return 单个文件删除成功返回true,否则返回false  
  128.      */  
  129.     public boolean deleteFile(String sPath) {  
  130.         flag = false;  
  131.         file = new File(sPath);  
  132.         // 路径为文件且不为空则进行删除  
  133.         if (file.isFile() && file.exists()) {  
  134.             file.delete();  
  135.             flag = true;  
  136.         }  
  137.         return flag;  
  138.     }  
  139.   
  140.     /**  
  141.      * 删除目录(文件夹)以及目录下的文件  
  142.      *   
  143.      * @param sPath  
  144.      *            被删除目录的文件路径  
  145.      * @return 目录删除成功返回true,否则返回false  
  146.      */  
  147.     public boolean deleteDirectory(String sPath) {  
  148.         // 如果sPath不以文件分隔符结尾,自动添加文件分隔符  
  149.         if (!sPath.endsWith(File.separator)) {  
  150.             sPath = sPath + File.separator;  
  151.         }  
  152.         File dirFile = new File(sPath);  
  153.         // 如果dir对应的文件不存在,或者不是一个目录,则退出  
  154.         if (!dirFile.exists() || !dirFile.isDirectory()) {  
  155.             return false;  
  156.         }  
  157.         flag = true;  
  158.         // 删除文件夹下的所有文件(包括子目录)  
  159.         File[] files = dirFile.listFiles();  
  160.         for (int i = 0; i < files.length; i++) {  
  161.             // 删除子文件  
  162.             if (files[i].isFile()) {  
  163.                 flag = deleteFile(files[i].getAbsolutePath());  
  164.                 if (!flag)  
  165.                     break;  
  166.             } // 删除子目录  
  167.             else {  
  168.                 flag = deleteDirectory(files[i].getAbsolutePath());  
  169.                 if (!flag)  
  170.                     break;  
  171.             }  
  172.         }  
  173.         if (!flag)  
  174.             return false;  
  175.         // 删除当前目录  
  176.         if (dirFile.delete()) {  
  177.             return true;  
  178.         } else {  
  179.             return false;  
  180.         }  
  181.     }  
  182.   
  183.     /**  
  184.      * 按字节【读】取文件的内容;  
  185.      *   
  186.      * @param Offset  
  187.      *            读取内容的开始出  
  188.      * @param length  
  189.      *            内容的长度;  
  190.      * @param filePath  
  191.      *            文件的路径;  
  192.      * @param code  
  193.      *            编码;  
  194.      * @return 返回相应的内容;  
  195.      * @throws Exception  
  196.      */  
  197.     public String readFileByByte(int Offset, int length, String filePath,  
  198.             String code) {  
  199.         File file = new File(filePath);  
  200.         FileInputStream fis = null;  
  201.         try {  
  202.             fis = new FileInputStream(file);  
  203.         } catch (FileNotFoundException e) {  
  204.             e.printStackTrace();  
  205.             return null;  
  206.         }  
  207.         try {  
  208.             fis.skip(Offset);  
  209.         } catch (IOException e) {  
  210.             e.printStackTrace();  
  211.             return null;  
  212.         }  
  213.         byte[] bytes = new byte[length];  
  214.         try {  
  215.             fis.read(bytes);  
  216.         } catch (IOException e) {  
  217.             e.printStackTrace();  
  218.             return null;  
  219.         }  
  220.         try {  
  221.             fis.close();  
  222.         } catch (IOException e) {  
  223.             e.printStackTrace();  
  224.             return null;  
  225.         }  
  226.         try {  
  227.             return new String(bytes, code);  
  228.         } catch (UnsupportedEncodingException e) {  
  229.             e.printStackTrace();  
  230.             return null;  
  231.         }  
  232.     }  
  233.   
  234.     /**  
  235.      * 将流中的文本读入一个 BufferedReader 中  
  236.      *   
  237.      * @param filePath  
  238.      *            文件路径  
  239.      * @param code  
  240.      *            编码格式  
  241.      * @return  
  242.      * @throws IOException  
  243.      */  
  244.   
  245.     public BufferedReader readToBufferedReader(String filePath, String code)  
  246.             throws IOException {  
  247.         BufferedReader bufferedReader = null;  
  248.         File file = new File(filePath);  
  249.         if (file.isFile() && file.exists()) { // 判断文件是否存在  
  250.             InputStreamReader read = new InputStreamReader(new FileInputStream(  
  251.                     file), code);// 考虑到编码格式  
  252.             bufferedReader = new BufferedReader(read);  
  253.         }  
  254.         return bufferedReader;  
  255.     }  
  256.   
  257.     /**  
  258.      * 将流中的文本读入一个 StringBuffer 中  
  259.      *   
  260.      * @param filePath  
  261.      *            文件路径  
  262.      * @throws IOException  
  263.      */  
  264.     public StringBuffer readToBuffer(String filePath, String code) {  
  265.         StringBuffer buffer = new StringBuffer();  
  266.         InputStream is;  
  267.         try {  
  268.             File file = new File(filePath);  
  269.             if (!file.exists())  
  270.                 return null;  
  271.             is = new FileInputStream(filePath);  
  272.             String line; // 用来保存每行读取的内容  
  273.             BufferedReader reader = new BufferedReader(new InputStreamReader(  
  274.                     new FileInputStream(file), code));  
  275.             line = reader.readLine(); // 读取第一行  
  276.             while (line != null) { // 如果 line 为空说明读完了  
  277.                 buffer.append(line); // 将读到的内容添加到 buffer 中  
  278.                 // buffer.append("\n"); // 添加换行符  
  279.                 line = reader.readLine(); // 读取下一行  
  280.             }  
  281.             reader.close();  
  282.             is.close();  
  283.         } catch (Exception e) {  
  284.             e.printStackTrace();  
  285.         }  
  286.         return buffer;  
  287.     }  
  288.   
  289.     public String loadFile(String filePath, String charset) {  
  290.         FileInputStream fin = null;  
  291.         StringBuffer sb = new StringBuffer();  
  292.         try {  
  293.             fin = new FileInputStream(new File(filePath));  
  294.             byte[] buffer = new byte[Integer.MAX_VALUE];  
  295.             int start = -1;  
  296.             while ((start = fin.read(buffer)) != -1) {  
  297.                 sb.append(new String(buffer, 0, start, charset));  
  298.             }  
  299.         } catch (Exception e) {  
  300.             e.printStackTrace();  
  301.         } finally {  
  302.             if (fin != null) {  
  303.                 try {  
  304.                     fin.close();  
  305.                 } catch (IOException e) {  
  306.                 }  
  307.             }  
  308.         }  
  309.         return sb.toString();  
  310.     }  
  311.   
  312.     /**  
  313.      * 获取某个目录下所有文件或者获取某个文件的大小; 单位:MB  
  314.      *   
  315.      * @param file  
  316.      * @return  
  317.      */  
  318.     public static double getDirSize(File file) {  
  319.         // 判断文件是否存在  
  320.         if (file.exists()) {  
  321.             // 如果是目录则递归计算其内容的总大小  
  322.             if (file.isDirectory()) {  
  323.                 File[] children = file.listFiles();  
  324.                 double size = 0;  
  325.                 for (File f : children)  
  326.                     size += getDirSize(f);  
  327.                 return size;  
  328.             } else {// 如果是文件则直接返回其大小,以“兆”为单位  
  329.                 double size = (double) file.length() / 1024 / 1024;  
  330.                 return size;  
  331.             }  
  332.         } else {  
  333.             System.out.println("获取文件大小错误!!文件或者文件夹不存在,请检查路径是否正确!");  
  334.             return 0.0;  
  335.         }  
  336.     }  
  337.   
  338.     /**  
  339.      * 获取某个目录下所有的文件的全路径和文件名的集合;  
  340.      *   
  341.      * @return  
  342.      */  
  343.     public List<List<String>> getAllFile(String mulu) {  
  344.         File file = new File(mulu);  
  345.         File[] files = file.listFiles();  
  346.         List<List<String>> ret = new ArrayList<List<String>>();  
  347.         List<String> allFilePath = new ArrayList<String>();  
  348.         List<String> allFileName = new ArrayList<String>();  
  349.         for (int i = 0; i < files.length; i++) {  
  350.             if (files[i].isDirectory()) {  
  351.                 allFilePath.add(files[i].toString());  
  352.                 allFileName.add(files[i].getName());  
  353.             }  
  354.         }  
  355.         ret.add(allFilePath);  
  356.         ret.add(allFileName);  
  357.         return ret;  
  358.     }  
  359.   
  360. }  
目录
相关文章
|
4月前
|
Java Maven
Cannot resolve method ‘mainName‘ in ‘FileUtil‘
Cannot resolve method ‘mainName‘ in ‘FileUtil‘
|
6月前
|
Java
FileInputStream和FileOutputStream
FileInputStream和FileOutputStream
49 0
File操作-FileReader(FileWriter)/BufferedReader(Writer)
File操作-FileReader(FileWriter)/BufferedReader(Writer)
53 0
|
Java
File操作-InputStream/OutputStream及是否创建文件
File操作-InputStream/OutputStream及是否创建文件
86 0
File操作 - RandomAccessFile使用详解
File操作 - RandomAccessFile使用详解
93 0
|
存储 Java
FileInputStream 你了解多少
FileInputStream 你了解多少
|
存储 索引
RandomAccessFile详解
此类的实例支持对随机访问文件的读取和写入。随机访问文件的行为类似存储在文件系统中的一个大型 byte 数组。存在指向该隐含数组的光标或索引,称为文件指针;输入操作从文件指针开始读取字节,并随着对字节的读取而前移此文件指针。
1563 0
10hutool实战:FileUtil 文件工具类(获取输出流)
10hutool实战:FileUtil 文件工具类(获取输出流)
686 0
10hutool实战:FileUtil 文件工具类(获取输出流)
8hutool实战:FileUtil 文件工具类(获取输入流)
8hutool实战:FileUtil 文件工具类(获取输入流)
373 0
8hutool实战:FileUtil 文件工具类(获取输入流)