java File文件操作共用方法整理
- package org.jelly.util;
- import java.io.BufferedReader;
- import java.io.BufferedWriter;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileNotFoundException;
- import java.io.FileOutputStream;
- import java.io.FileReader;
- import java.io.FileWriter;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.io.StringReader;
- import java.util.ArrayList;
- import java.util.LinkedList;
- import java.util.List;
- import org.jelly.code.IndexCode;
- import org.jelly.exception.ExecutetimeException;
- /**
- * 文件经常使用的操作的工具类
- * @since 1.0.0
- */
- public class FileUtil {
- private FileUtil(){}
- private static final String LOCK = "_LOCK";
- private static final int BUFFER_SIZE = 1024 * 1024 / 2;
- /**
- * <des> 文件拷贝, 方法调用结束或抛出异常, 都将关闭输入输出流, 输出流flush </des>
- * @param in InputStream
- * @param out OutputStream
- * @since 1.0.0
- */
- public static void copyFile(InputStream in, OutputStream out){
- try {
- byte[] buffer = new byte[BUFFER_SIZE];
- int read;
- while((read = in.read(buffer)) != IndexCode.EOF.toCode()){
- out.write(buffer, 0, read);
- }
- } catch (Throwable e) {
- throw new ExecutetimeException(e);
- } finally {
- closeStream(in, out);
- }
- }
- /**
- * <des> 写出, 方法调用结束或抛出异常, 都将关闭输入输出流, 输出流flush </des>
- * @since 1.6.0
- */
- public static void write(InputStream in, OutputStream out){
- copyFile(in, out);
- }
- /**
- * <des> 字符串内容写出, 方法调用结束或抛出异常, 都将关闭输入输出流, 输出流flush </des>
- * @since 1.6.0
- */
- public static void write(String text, OutputStream out){
- try {
- out.write(text.getBytes());
- } catch (Throwable e) {
- throw new ExecutetimeException(e);
- } finally {
- closeStream(out);
- }
- }
- /**
- * <des> 字符串内容写出到文件, 方法调用结束或抛出异常, 都将关闭输入输出流, 输出流flush </des>
- * @since 1.6.0
- */
- public static void write(String text, File file){
- BufferedReader reader = null;
- BufferedWriter writer = null;
- try {
- reader = new BufferedReader(new StringReader(text));
- writer = new BufferedWriter(new FileWriter(file));
- char[] buffer = new char[BUFFER_SIZE];
- int read;
- while((read = reader.read(buffer)) != IndexCode.EOF.toCode()){
- writer.write(buffer, 0, read);
- }
- } catch (Throwable e) {
- throw new ExecutetimeException(e);
- } finally {
- closeStream(reader, writer);
- }
- }
- /**
- * <des> 读取获得文件内容 </des>
- * @param pathname 文件全路径名称
- * @return 读取获得的文件内容
- * @since 1.0.0
- */
- public static String readFile(String pathname){
- return readFile(new File(pathname));
- }
- /**
- * <des> 读取获得文件内容 </des>
- * @param file 文件对象
- * @return 读取获得的文件内容
- * @since 1.0.0
- */
- public static String readFile(File file){
- String[] contents = readLineFile(file);
- StringBuilder builder = new StringBuilder();
- for(String content : contents){
- builder.append(content);
- }
- return builder.toString();
- }
- /**
- * <des> 按行读取文件, 文件的每一行作为数组的一个元素 </des>
- * @param pathname 文件全路径名称
- * @return 数组
- * @since 1.0.0
- */
- public static String[] readLineFile(String pathname){
- return readLineFile(new File(pathname));
- }
- /**
- * <des> 按行读取文件, 文件的每一行作为数组的一个元素 </des>
- * @param file 文件对象
- * @return 数组
- * @since 1.0.0
- */
- public static String[] readLineFile(File file){
- BufferedReader reader = null;
- try {
- reader = new BufferedReader(new FileReader(file));
- LinkedList<String> list = new LinkedList<String>();
- String read;
- while((read = reader.readLine()) != null){
- list.add(read);
- }
- return ArrayUtil.asArray(list);
- } catch (Throwable e) {
- throw new ExecutetimeException(e);
- } finally {
- closeStream(reader);
- }
- }
- /**
- * <des> 获取文件夹下全部的文件对象 </des>
- * @param directory 文件文件夹对象
- * @return 文件对象列表
- * @since 1.0.0
- */
- public static List<File> listFiles(File directory){
- return listFiles(directory, null);
- }
- /**
- * <des> 获取文件夹下全部由參数指定类型的文件对象 </des>
- * @param source 文件文件夹对象
- * @param filter 期望得到的文件的后缀名称
- * @return 文件对象列表
- * @since 1.0.0
- */
- public static List<File> listFiles(File source, String filter){
- File[] fileList = source.listFiles();
- List<File> list = new ArrayList<File>();
- filter = filter == null ?
- null : filter.toLowerCase();
- if(fileList != null && fileList.length > 0){
- for(File file : fileList){
- if(file.isFile()){
- add(list, file, filter);
- }else if(file.isDirectory()){
- list.addAll(listFiles(file, filter));
- }
- }
- }else if(source.isFile()){
- add(list, source, filter);
- }
- return list;
- }
- /**
- * <des> 在參数指定的文件夹中查找文件 </des>
- * @param dirpath 文件文件夹全路径名称
- * @param filename 查找的文件名
- * @return 若查找的到, 则返还该文件对象, 若查找不到, 则返还null
- * @since 1.0.0
- */
- public static File findFile(String dirpath, String filename){
- return findFile(new File(dirpath), filename);
- }
- /**
- * <des> 在參数指定的文件夹中查找文件 </des>
- * @param directory 文件文件夹对象
- * @param filename 查找的文件名
- * @return 若查找的到, 则返还该文件对象, 若查找不到, 则返还null
- * @since 1.0.0
- */
- public static File findFile(File directory, String filename){
- String filter = StringUtil.substringAfterLastWith(filename, ".");
- List<File> files = listFiles(directory, filter);
- if(files.size() == 0) return null;
- for(File file : files){
- if(file.getAbsolutePath().endsWith(filename)){
- return file;
- }
- }
- return null;
- }
- /**
- * <des> 删除文件或文件夹 </des>
- * @param file 文件或文件文件夹对象
- * @since 1.0.0
- */
- public static void delete(File file){
- synchronized (LOCK) {
- if(file.isFile()){
- file.delete();
- }else if(file.isDirectory()){
- File[] files = file.listFiles();
- for(File item : files){
- delete(item);
- }
- }
- file.delete();
- }
- }
- /**
- * <des> 创建文件夹 </des>
- * @param pathname 文件夹名称
- * @return 若文件夹不存在则创建, 若存在则直接返还true
- * @since 1.0.0
- */
- public static boolean createDir(String pathname){
- return createDir(new File(pathname));
- }
- /**
- * <des> 创建文件夹 </des>
- * @param dir 文件夹对象
- * @return 若文件夹不存在则创建, 若存在则直接返还true
- * @since 1.0.0
- */
- public static boolean createDir(File dir){
- synchronized (LOCK) {
- if(!dir.exists()){
- return dir.mkdirs();
- }
- return true;
- }
- }
- /**
- * <des> 获取FileInputStream实例 </des>
- * @since 1.0.0
- */
- public static FileInputStream getFileInputStream(String pathname){
- return getFileInputStream(new File(pathname));
- }
- /**
- * <p><des> 获取FileInputStream实例 </des></p>
- * @since 1.0.0
- */
- public static FileInputStream getFileInputStream(File file){
- try {
- return new FileInputStream(file);
- } catch (FileNotFoundException e) {
- throw new ExecutetimeException(e);
- }
- }
- /**
- * <p><des> 获取FileOutputStream实例 </des></p>
- * @since 1.0.0
- */
- public static FileOutputStream getFileOutputStream(String pathname){
- return getFileOutputStream(new File(pathname), false);
- }
- /**
- * <p><des> 获取FileOutputStream实例 </des></p>
- * @since 1.0.0
- */
- public static FileOutputStream getFileOutputStream(String pathname, boolean append){
- return getFileOutputStream(new File(pathname), append);
- }
- /**
- * <p><des> 获取FileOutputStream实例 </des></p>
- * @since 1.0.0
- */
- public static FileOutputStream getFileOutputStream(File file){
- return getFileOutputStream(file, false);
- }
- /**
- * <p><des> 获取FileOutputStream实例 </des></p>
- * @since 1.0.0
- */
- public static FileOutputStream getFileOutputStream(File file, boolean append){
- try {
- return new FileOutputStream(file, append);
- } catch (FileNotFoundException e) {
- throw new ExecutetimeException(e);
- }
- }
- // 加入文件到列表
- private static void add(List<File> list, File file, String filter){
- if(filter == null){
- list.add(file);
- }else if(file.getAbsolutePath().toLowerCase().endsWith(filter)){
- list.add(file);
- }
- }
- }
java File文件操作共用方法整理的更多相关文章
- Java File文件操作 创建文件\目录,删除文件\目录
Java手册 java.io 类 File java.lang.Object java.io.File 所有已实现的接口: Serializable, Comparable<File> p ...
- JAVA file文件操作
/** *文件重命名 * @param oldname 原来的文件名 * @param newname 新文件名 */ @RequestMapping("renameFile") ...
- Java File 类的使用方法详解
Java File类的功能非常强大,利用Java基本上可以对文件进行所有的操作.本文将对Java File文件操作类进行详细地分析,并将File类中的常用方法进行简单介绍,有需要的Java开发者可以看 ...
- Java File 类的使用方法详解(转)
转自:http://www.codeceo.com/article/java-file-class.html Java File类的功能非常强大,利用Java基本上可以对文件进行所有的操作.本文将对J ...
- java常见文件操作
收集整理的java常见文件操作,方便平时使用: //1.创建文件夹 //import java.io.*; File myFolderPath = new File(str1); try { if ( ...
- java字符流操作flush()方法及其注意事项
java字符流操作flush()方法及其注意事项 flush()方法介绍 查阅文档可以发现,IO流中每一个类都实现了Closeable接口,它们进行资源操作之后都需要执行close()方法将流关闭 ...
- HTML5 本地文件操作之FileSystemAPI整理(二)
一.文件目录操作 1.DirectoryEntry对象 属性: 1.isFile: 操作对象的是否为文件,DirectoryEntry对象固定其值为false 2.isDirectory: 操作对象是 ...
- File 文件操作类 大全
File 文件操作类 大全 许多人都会对文件操作感到很难 我也是 但是一个好的项目中必定会涉及到文件操作的 文件的复制 粘贴 等等等 公司大佬写了 一个文件操作的工具类 感觉还是棒棒的啦 ...
- [转]python file文件操作--内置对象open
python file文件操作--内置对象open 说明: 1. 函数功能打开一个文件,返回一个文件读写对象,然后可以对文件进行相应读写操作. 2. file参数表示的需要打开文件的相对路径(当前 ...
随机推荐
- PTA 07-图6 旅游规划 (25分)
题目地址 https://pta.patest.cn/pta/test/15/exam/4/question/717 5-9 旅游规划 (25分) 有了一张自驾旅游路线图,你会知道城市间的高速公路 ...
- tomcat404
确认目录下有我的html文件,但仍然是404. 问题一: 指定目录下没有访问的文件,这是最常见的,也是最容易解决的.只需要将访问的文件(如:a.html)放到指定目录下即可. 问题二: 将访问的文件( ...
- BZOJ 3270 博物馆 ——概率DP 高斯消元
用$F(i,j)$表示A在i,B在j的概率. 然后很容易列出转移方程. 然后可以高斯消元了! 被一个问题困扰了很久,为什么起始点的概率要加上1. (因为其他博客上都是直接写成-1,雾) 考虑初始状态是 ...
- 【边双连通】poj 3352 Road Construction
http://poj.org/problem?id=3352 [题意] 给定一个连通的无向图,求最少加多少条边使得这个图变成边双连通图 [AC] //#include<bits/stdc++.h ...
- angular父子scope之间的访问
1.子可以访问父的scope,也可以更新相同的scope,但父scope不会被刷新 2.父要访问子scope的方法
- 【bzoj4568】【Scoi2016】幸运数字 (线性基+树上倍增)
Description A 国共有 n 座城市,这些城市由 n-1 条道路相连,使得任意两座城市可以互达,且路径唯一.每座城市都有一个幸运数字,以纪念碑的形式矗立在这座城市的正中心,作为城市的象征.一 ...
- 【笔记】Linux内核中的循环缓冲区
1. 有关ring buffer的理解 1) ring buffer位首尾相接的buffer,即类似生活中的圆形跑道: 2) 空闲空间+数据空间=ring buffer大小 3) ring bu ...
- shell的函数的简单入门
shell的函数的简单入门 语法: function funcname(){} 示例: #!/bin/bash #定义将参数转化为大写的函数 function strToUpper(){ | tr ' ...
- maven编码gbk的不可映射字符
如图,老是出现这个错误,百度说是打开源文件,更改编码格式,或者是更改File Encodings 的编码格式,或者是更改java compiler --use computer为eclipse, 都不 ...
- DOM对象之查找标签&属性操作
HTML DOM (文档对象模型) DOM(Document Object Model)是一套对文档的内容进行抽象和概念化的方法. JavaScript对DOM进行了实现,对应于JavaScript中 ...