FileUtil.java
package com.founder.util.file; import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern; import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
/**
*
* <B>描述:</B>文件操作工具类<br/>
* <B>版本:</B>v2.0<br/>
* <B>创建时间:</B>2012-10-10<br/>
* <B>版权:</B>flying团队<br/>
*
* @author zdf
*
*/
public class FileUtil {
/**
* 通过文件读取XML配置文件
*
* @param xmlFile
* @return document 返回一个Document对象
*/
public static Document readXml(File xmlFile) {
Document tableNameDocument = null;
SAXReader tableNameReader = new SAXReader();
try {
tableNameDocument = tableNameReader.read(xmlFile);
} catch (DocumentException e) {
e.printStackTrace();
}
return tableNameDocument;
} /**
* 通过流读取XML配置文件
*
* @param xmlStream
* @return document 返回一个Document对象
*/
public static Document readXml(InputStream xmlStream) {
Document tableNameDocument = null;
SAXReader tableNameReader = new SAXReader();
try {
tableNameDocument = tableNameReader.read(xmlStream);
} catch (DocumentException e) {
// log.error("解析xml输入流出错!",e);
}
return tableNameDocument;
}
/**
* 将一个xml文件编程document,并保证在file文件
*
* @param document
* @param file
* 保持xml的文件
*/
public static void writeXml(Document document, File file) {
XMLWriter xmlWriter = null; OutputFormat format = new OutputFormat();
// 设置缩进
format.setIndent(true);
// 保持为UTF-8
format.setEncoding("UTF-8");
// 加入换行符
// format.setNewlines(true);
// 写入文件
try {
xmlWriter = new XMLWriter(new FileOutputStream(file), format);
xmlWriter.write(document);
xmlWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
} /**
* 文件转变成字符串,编程字符串格式
*
* @param file
* 文件
* @return 字符串
*/
public static String fileToString(File file) {
try {
BufferedReader reader = null;
String template = "";
StringBuffer templateBuffer = new StringBuffer();
String tempStr = null;
// 读取文件,按照UTF-8的方式
reader = new BufferedReader(new InputStreamReader(
new FileInputStream(file), "UTF-8"));
// 一次读入一行,直到读入null为文件结束
while ((tempStr = reader.readLine()) != null) {
templateBuffer.append(tempStr + "\r\n");
}
// 将StringBuffer变成String进行字符操作
template = templateBuffer.toString();
reader.close();
return template;
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
} /**
* 将字符串保存到文件中
*
* @param str
* 字符串
* @param file
* 保存的文件
*/
public static void stringToFile(String str, File file) {
OutputStreamWriter writer = null;
try {
writer = new OutputStreamWriter(new FileOutputStream(file), "UTF-8");
writer.write(str);
writer.close();
} catch (IOException e) {
e.printStackTrace();
} }
/**
* 将输入流转换成字符串输出
*
* @param is
* @return 返回字符串
*/
public static String streamToString(InputStream is){
if( is != null){
StringBuilder sb = new StringBuilder();
String line = "";
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(is,"UTF-8"));
while((line = reader.readLine()) != null){
sb.append(line).append("\n");
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
} return sb.toString();
}else{
return "";
}
} /**
* 创建文件操作
*
* @param filePath 文件路径
* @throws FlyingException
*/
public static File createFile(String filePath) {
File file = new File(filePath);
if(!file.exists()){
if(filePath.endsWith(File.separator)){
// throw new FlyingException("目标文件不能为目录!");
} if(!file.getParentFile().exists()){
if(!file.getParentFile().mkdirs()){
// throw new FlyingException("创建目标文件所在的目录失败!");
}
}
} return file;
}
/**
* 删除文件操作
*
* @param file
*/
public static void deleteFile(File file) {
if (file.exists()) { // 判断文件是否存在
if (file.isFile()) { // 判断是否是文件
file.delete(); // delete()方法 你应该知道 是删除的意思;
} else if (file.isDirectory()) { // 否则如果它是一个目录
File files[] = file.listFiles(); // 声明目录下所有的文件 files[];
for (int i = 0; i < files.length; i++) { // 遍历目录下所有的文件
FileUtil.deleteFile(files[i]); // 把每个文件 用这个方法进行迭代
}
}
file.delete();
}
} /**
* 在本文件夹下查找
*
* @param s
* String 文件名
* @return File[] 找到的文件
*/
public static File[] getFiles(String s) {
return getFiles("./", s);
} /**
* 获取文件 可以根据正则表达式查找
*
* @param dir
* String 文件夹名称
* @param s
* String 查找文件名,可带*.?进行模糊查询
* @return File[] 找到的文件
*/
public static File[] getFiles(String dir, String s) {
// 开始的文件夹
File file = new File(dir);
s = s.replace('.', '#');
s = s.replaceAll("#", "\\\\.");
s = s.replace('*', '#');
s = s.replaceAll("#", ".*");
s = s.replace('?', '#');
s = s.replaceAll("#", ".?");
s = "^" + s + "$";
Pattern p = Pattern.compile(s);
ArrayList list = filePattern(file, p);
File[] rtn = new File[list.size()];
list.toArray(rtn);
return rtn;
} /**
* @param file
* File 起始文件夹
* @param p
* Pattern 匹配类型
* @return ArrayList 其文件夹下的文件夹
*/
private static ArrayList filePattern(File file, Pattern p) {
if (file == null) {
return null;
} else if (file.isFile()) {
Matcher fMatcher = p.matcher(file.getName());
if (fMatcher.matches()) {
ArrayList list = new ArrayList();
list.add(file);
return list;
}
} else if (file.isDirectory()) {
File[] files = file.listFiles();
if (files != null && files.length > 0) {
ArrayList list = new ArrayList();
for (int i = 0; i < files.length; i++) {
ArrayList rlist = filePattern(files[i], p);
if (rlist != null) {
list.addAll(rlist);
}
}
return list;
}
}
return null;
} /**
* 重命名文件
* @author zjx 2012-10-23
* @param sourceFileName
* @param destFileName
* @return
*/
public static boolean renameFile(String sourceFileName,String destFileName){
File source_file = new File(sourceFileName);
File dest_file = new File(destFileName);
if(!source_file.exists()){
throw new RuntimeException("重命名文件: no such file"+sourceFileName);
}
source_file.renameTo(dest_file);
return true;
} /**
* 获取文件夹或者文件的大小
* @param f
* @return
*/
public static long getFileSize(File f){
long size = 0;
if(!f.isDirectory()){ //如果是文件,直接返回文件大小
size = f.length();
}else{
File[] filelist = f.listFiles();
for(int i=0;i<filelist.length;i++){
if(filelist[i].isDirectory()){
size += getFileSize(filelist[i]);
}else{
size += filelist[i].length();
}
}
}
return size;
} public static byte[] getBytesFromFile(File file) throws IOException {
InputStream is = new FileInputStream(file); // 获取文件大小 long length = file.length(); if (length > Integer.MAX_VALUE) {
// 文件太大,无法读取
throw new IOException("File is to large "+file.getName());
} // 创建一个数据来保存文件数据
byte[] bytes = new byte[(int)length];
// 读取数据到byte数组中
int offset = 0;
int numRead = 0;
while (offset < bytes.length && (numRead=is.read(bytes, offset, bytes.length-offset)) >= 0) {
offset += numRead;
}
// 确保所有数据均被读取
if (offset < bytes.length) {
throw new IOException("Could not completely read file "+file.getName());
}
// Close the input stream and return bytes
is.close();
return bytes;
}
//合并两个字节数组
public static byte[] byteMerger(byte[] byte_1, byte[] byte_2){
byte[] byte_3 = new byte[byte_1.length+byte_2.length];
System.arraycopy(byte_1, 0, byte_3, 0, byte_1.length);
System.arraycopy(byte_2, 0, byte_3, byte_1.length, byte_2.length);
return byte_3;
} public static void SaveFileFromInputStream(InputStream stream,String filename) throws IOException
{
int index = filename.lastIndexOf(File.separatorChar);
String path = filename.substring(0,index + 1);
File file=new File(path);
if(!file .exists() || !file.isDirectory()){
file.mkdirs();
} File saveFile = new File(filename);
if(!saveFile .exists())
saveFile.createNewFile();
FileOutputStream fs = new FileOutputStream(filename);
byte[] buffer =new byte[1024*1024];
int bytesum = 0;
int byteread = 0;
while ((byteread=stream.read(buffer))!=-1)
{
bytesum+=byteread;
fs.write(buffer,0,byteread);
fs.flush();
}
fs.close();
stream.close();
} public static void main(String[] args) {
String fileName = "C:/Users/Administrator/Desktop/Temp/";
long size = FileUtil.getFileSize(new File(fileName));
System.out.println("success."+size);
}
}
FileUtil.java的更多相关文章
- 【hadoop】——修改hadoop FileUtil.java,解决权限检查的问题
在Hadoop Eclipse开发环境搭建这篇文章中,第15.)中提到权限相关的异常,如下: 15/01/30 10:08:17 WARN util.NativeCodeLoader: Unable ...
- 修改hadoop FileUtil.java,解决权限检查的问题
在Hadoop Eclipse开发环境搭建这篇文章中,第15.)中提到权限相关的异常,如下: 15/01/30 10:08:17 WARN util.NativeCodeLoader: Una ...
- JAVA安全模型
作为一种诞生于互联网兴起时代的语言,Java 从一开始就带有安全上的考虑,如何保证通过互联网下载到本地的 Java 程序是安全的,如何对 Java 程序访问本地资源权限进行有限授权,这些安全角度的考虑 ...
- 《Java学习笔记(第8版)》学习指导
<Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...
- 用java下载hdfs文件报NullPointerException
用fs.copyToLocalFile( hdfsPath,localPath);下载hdfs的文件会报NullPointerException,具体报错为: java.lang.NullPointe ...
- 无向图的最短路径算法JAVA实现
一,问题描述 给出一个无向图,指定无向图中某个顶点作为源点.求出图中所有顶点到源点的最短路径. 无向图的最短路径其实是源点到该顶点的最少边的数目. 本文假设图的信息保存在文件中,通过读取文件来构造图. ...
- 有向图的拓扑排序算法JAVA实现
一,问题描述 给定一个有向图G=(V,E),将之进行拓扑排序,如果图有环,则提示异常. 要想实现图的算法,如拓扑排序.最短路径……并运行看输出结果,首先就得构造一个图.由于构造图的方式有很多种,这里假 ...
- 5 weekend01、02、03、04、05、06、07的分布式集群的HA测试 + hdfs--动态增加节点和副本数量管理 + HA的java api访问要点
weekend01.02.03.04.05.06.07的分布式集群的HA测试 1) weekend01.02的hdfs的HA测试 2) weekend03.04的yarn的HA测试 1) wee ...
- java中文件操作的工具类
代码: package com.lky.pojo; import java.io.BufferedReader; import java.io.BufferedWriter; import java. ...
随机推荐
- (第二章)Java并发机制的底层实现原理
一.概述 Java代码在编译后会变成Java字节码,字节码被类加载器加载到JVM里,JVM执行字节码,最终需要转化为汇编指令在CPU上执行,Java中所使用的并发机制依赖于JVM的实现和CPU的指令. ...
- java设计模式---原型模式
原型模式(Prototype):用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. 原型模式结构图 通俗来说:原型模式就是深拷贝和浅拷贝的实现. 浅拷贝 只实现了值拷贝,对于引用对象还是 ...
- 用ueditor上传图片、文件等到七牛云存储
ueditor上传文件,是用数据流的形式上传的. 而七牛云存储官方文档中,只提供了文件路径上传的方式. 但是,仅仅是在官方文档中写了这一种方式. 事实上,利用VS的对象管理器,打开Qiniu的dll, ...
- 使用 Intel HAXM 为 Android 模拟器加速,媲美真机(转)
源:http://www.cnblogs.com/beginor/archive/2013/01/13/2858228.html 慢的问题. Intel HAXM (Hardware Accelera ...
- (转)反射发送实战(-)InvokeMember
反射是.net中的高级功能之一,利用反射可以实现许多以前看来匪夷所思的功能,下面是我看了<Programming C#>(O'Reilly)之后对于反射的一点实践,本想直接做个应用程序来说 ...
- 查询矩形范围内的"点"要素
步骤 1,首先在含有主视图控件 ESRI.ArcGIS.Controls.AxMapControl mapCtrl_main 的主类中定义一个 IEnvelope 成员变量,用于记录鼠标在主视图控件画 ...
- <display:column>属性解释
参考官方网站:http://www.displaytag.org/1.2/displaytag/tagreference.html 所有属性: autolink,class,comparator,de ...
- Linux 开机报 or type Control-D to continue
解决步骤: 1.输入root密码 2.看是哪个盘报的错,我这边是sda3(可能会是不同的盘),就是代码中标为FAIL 输入以下命令fsck -y /dev/sda3
- AsyncTask api
package com.bf.systemadmin;import android.os.AsyncTask;import android.util.Log;public class MyTask e ...
- 编译osg for android
做osg数数已经快两年了,之前将一些opengl的代码搬到了osg上,现在将一些osg的代码搬到了android上,尝试看看效果. 首先是编译的事情,android for android在http: ...