文件常用类的整理
来源:互联网 发布:淘宝一次性口罩卫生吗 编辑:程序博客网 时间:2024/05/24 04:38
package util;import util.sup.Encoding;import util.sup.HTMLDecoder;import util.sup.SinoDetect;import java.io.*;import java.text.DecimalFormat;//import com.sun.media.jfxmedia.logging.Logger;/** * 文件常用类的整理,包括几大常用功能:<br> * <ol> * <li>文件以及文件夹的操作(增、删、改、复制等)</li> * <li>文件读写部分</li> * <li>流,字节的读取</li> * <li>其他</li> * <li></li> * </ol> * * @date 2011-4-20 * @author MipatchTeam#hqj,MipatchTeam#yhh,MipatchTeam#chenc * */public class FileUtil { // --------------------- 1. -------------------------------- /** * 新建目录 * * @param folderPath * String 如 c:/fqf * @return boolean */ public static void newFolder(String folderPath) { String filePath = folderPath; filePath = filePath.toString(); File myFilePath = new File(filePath); if (!myFilePath.exists()) { myFilePath.mkdir(); } } /** * 删除文件 * * @param filePathAndName * String 文件路径及名称 如c:/fqf.txt * @param * * @return boolean */ public static void delFile(String filePathAndName) { String filePath = filePathAndName; filePath = filePath.toString(); File myDelFile = new File(filePath); myDelFile.delete(); } /** * 删除文件夹 * * @param * * * @return boolean */ public static void delFolder(String folderPath) { delAllFile(folderPath); // 删除完里面所有内容 String filePath = folderPath; filePath = filePath.toString(); File myFilePath = new File(filePath); myFilePath.delete(); // 删除空文件夹 } /** * 删除文件夹里面的所有文件 * * @param path * String 文件夹路径 如 c:/fqf */ public static 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 * @throws Exception */ public static void copyFile(String oldPath, String newPath) throws Exception { 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]; while ((byteread = inStream.read(buffer)) != -1) { bytesum += byteread; // 字节数 文件大小 // System.out.println(bytesum); fs.write(buffer, 0, byteread); } inStream.close(); fs.close(); } } /** * 复制整个文件夹内容 * * @param oldPath * String 原文件路径 如:c:/fqf * @param newPath * String 复制后路径 如:f:/fqf/ff * @return boolean * @throws Exception */ public static void copyFolder(String oldPath, String newPath) throws Exception { (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]); } } } /** * 移动文件到指定目录 * * @param oldPath * String 如:c:/fqf.txt * @param newPath * String 如:d:/fqf.txt * @throws Exception */ public static void moveFile(String oldPath, String newPath) throws Exception { copyFile(oldPath, newPath); delFile(oldPath); } /** * 移动文件夹到指定目录 * * @param oldPath * String 如:c:/fqf.txt * @param newPath * String 如:d:/fqf.txt * @throws Exception */ public static void moveFolder(String oldPath, String newPath) throws Exception { copyFolder(oldPath, newPath); delFolder(oldPath); } // ----------------------------------------------------- // --------------------- 2. -------------------------------- /** * 数据流直接写入文件 * * @param is * @param filePath String 文件路径及名称 如c:/fqf.txt * @throws Exception * @throws Exception */ public static void writeFile(InputStream is, String filePath) throws Exception { FileOutputStream fs = new FileOutputStream(filePath); byte[] buf = new byte[1024]; int len = is.read(buf); while (len != -1) { fs.write(buf, 0, len); len = is.read(buf); } fs.close(); } /** * 文字写入文件 以 <b>iso-8859-1</b> 为编码格式 * * @param src * @param filePath String 文件路径及名称 如c:/fqf.txt * @throws Exception */ public static void writeFile(String src, String filePath) throws Exception { FileOutputStream fs = new FileOutputStream(filePath); fs.write(src.getBytes("iso-8859-1"));// 如果不指定编码,在中英文平台上运行时可能会出现意想不到的结果 fs.close(); } /** * 文件写入文件并制定编码方式 * * @param src * @param charset 指定编码格式 * @param filePath String 文件路径及名称 如c:/fqf.txt */ public static void writeFile(String src, String filePath, String charset) throws Exception { FileOutputStream fs = new FileOutputStream(filePath); fs.write(src.getBytes(charset)); fs.close(); } /** * 文字附加在原内容后写入文件 以 <b>iso-8859-1</b> 为编码格式 * @param src * @param filePath String 文件路径及名称 如c:/fqf.txt */ public static void writeFileAppend(String src, String filePath) throws Exception { FileOutputStream fs = new FileOutputStream(filePath,true); fs.write(src.getBytes("iso-8859-1"));//如果不指定编码,在中英文平台上运行时可能会出现意想不到的结果 fs.close(); } /** * 文字附加在原内容后写入文件 以 charset 为编码格式 * @param src * @param filePath String 文件路径及名称 如c:/fqf.txt */ public static void writeFileAppend(String src, String filePath, String charset) throws Exception { FileOutputStream fs = new FileOutputStream(filePath,true); fs.write(src.getBytes(charset));//如果不指定编码,在中英文平台上运行时可能会出现意想不到的结果 fs.close(); } /** * 读取文件 以 <b>iso-8859-1</b> 为编码格式 * * @param filePath String 文件路径及名称 如c:/fqf.txt * @return */ public static String readFile(String filePath) { FileInputStream fs; String content = ""; try { fs = new FileInputStream(filePath); byte data[] = new byte[1024]; int len = fs.read(data); while (len != -1) { content = content + new String(data, 0, len, "iso-8859-1"); len = fs.read(data); } fs.close(); } catch (FileNotFoundException e) { } catch (IOException e) { } return content; } /** * 以指定编码方式读取文件 * * @param filePath String 文件路径及名称 如c:/fqf.txt * @param charset * @return */ public static String readFile(String filePath, String charset) { FileInputStream fs; String content = ""; try { fs = new FileInputStream(filePath); byte data[] = new byte[1024]; int len = fs.read(data); while (len != -1) { content = content + new String(data, 0, len, charset); len = fs.read(data); } fs.close(); } catch (FileNotFoundException e) { } catch (IOException e) { } return content; } // ----------------------------------------------------- // --------------------- 3. -------------------------------- /** * 读取流内容 * * @param is * @return * @throws java.io.IOException */ public static String readStream(InputStream is) { String cs = null; try { ByteArrayOutputStream buffer = null; BufferedInputStream in = new BufferedInputStream(is); buffer = new ByteArrayOutputStream(); byte[] buff = new byte[1024]; int len = -1; // 从socket连接中获取输出流,主要为请求的响应报头和HTML编码 while ((len = in.read(buff)) != -1) { buffer.write(buff, 0, len); }// 由于使用BufferOutputStream会出现一个连接被分割在两行的情况,因此只能利用字节流将所有源代码取得,而后换成String HTMLDecoder htmd = new HTMLDecoder(); SinoDetect sd = new SinoDetect(); if (buffer != null) { try { int i = sd.detectEncoding(buffer.toByteArray()); //cs = buffer.toString(Encoding.htmlname[i]); //String encode = Encoding.htmlname[i]; //System.out.println(Encoding.htmlname[i]); if( Encoding.htmlname[i].equals("GB2312") ) { cs = buffer.toString("GBK"); }else{ cs = buffer.toString(Encoding.htmlname[i]); } } catch (RuntimeException e) { cs = buffer.toString("GBK"); } // try{ // cs=buffer.toString(Encoding.htmlname[i]); // }catch(Exception e){ // cs=buffer.toString("GBK"); // } cs = cs.replace(" ", ""); cs = htmd.ASCIIToGB(cs); } is.close(); } catch (IOException e) { } return cs; } /** * 读取字节内容 * * @param * @return * @throws java.io.IOException */ public static String readBytes(byte[] buff) throws Exception { String cs = null; try { HTMLDecoder htmd = new HTMLDecoder(); SinoDetect sd = new SinoDetect(); if (buff != null) { if (sd.detectEncoding(buff) == 1) { cs = new String(buff, "GBK"); cs = cs.replace(" ", " "); cs = htmd.ASCIIToGB(cs); } else if (sd.detectEncoding(buff) == 2) { cs = new String(buff, "HZ"); cs = cs.replace(" ", " "); cs = htmd.ASCIIToGB(cs); } else if (sd.detectEncoding(buff) == 3) { cs = new String(buff, "BIG5"); cs = cs.replace(" ", " "); cs = htmd.ASCIIToGB(cs); } else if (sd.detectEncoding(buff) == 4) { cs = new String(buff, "EUC_TW"); cs = cs.replace(" ", " "); cs = htmd.ASCIIToGB(cs); } else if (sd.detectEncoding(buff) == 5) { cs = new String(buff, "ISO_2022_CN"); cs = cs.replace(" ", " "); cs = htmd.ASCIIToGB(cs); } else if (sd.detectEncoding(buff) == 6) { cs = new String(buff, "UTF-8"); cs = cs.replace(" ", " "); cs = htmd.ASCIIToGB(cs); } else if (sd.detectEncoding(buff) == 7) { cs = new String(buff, "Unicode"); cs = cs.replace(" ", " "); cs = htmd.ASCIIToGB(cs); } else cs = new String(buff); // cs=new String(buff,"GBK"); } } catch (IOException e) { throw e; } return cs; } /** * 读取流内容,指定编码方式 * * @param is * @param charset * @return */ public static String readStream(InputStream is, String charset) { StringBuilder sb = new StringBuilder(); // String content=""; try { byte data[] = new byte[1024]; for (int n; (n = is.read(data)) != -1;) { sb.append(new String(data, 0, n, charset)); } is.close(); } catch (IOException e) { } return sb.toString(); // return content; } // ----------------------------------------------------- // --------------------- 4. -------------------------------- /** * 获取文件大小 * @param fileName * @return 单位为:kb * @throws Exception */ public static double getFileSize(String fileName) { double size = 0; DecimalFormat df = new DecimalFormat("###.0"); File file = new File(fileName); double length = file.length(); if (file.exists()) { size = Double.valueOf(df.format(length / 1024)); } return size; } // -----------------------------------------------------}
阅读全文
0 0
- 文件常用类的整理
- C常用类整理(1)--文件遍历
- 日期常用类的整理
- 各种常用头文件的作用(转载整理)
- C下常用文件操作指令的整理
- python常用文件操作方法整理
- C常用类整理(2)--文件复制、删除、移动
- C#一些常用类的操作整理
- 常用的网站整理
- 整理的常用网站
- php常用类整理
- php常用类整理
- php常用类整理
- php常用类整理
- php常用类整理
- php 常用类整理
- 常用API类整理
- 文件操作及常用函数整理
- Serializable和Parcelable的区别
- JAVA 内部类详解
- sublime text3 unicode 中文转换
- 内存可见性和原子性:Synchronized和Volatile的比较
- motion
- 文件常用类的整理
- Deepin 15.5 使用DataGrip可视化操作Oracle数据库
- 解决centos7下 客户端不能连接redis 报错 及 后台运行的问题
- NWERC 2017(Connect the Dots-几何+搜索)
- Xcode打包ipa所在位置
- 华盛顿大学2:分类学习笔记
- 利用matplotlib中imshow()函数绘图
- struts-2.5.14.1中jar包引入
- RabbitMQ学习心得——发布/订阅(上)