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:\Development\weblogic\user_projects\domains\cffg_domain\autodeploy\cffg_p2p\applicationPrint\fxRepayDetail.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();
}
java——操作文件的更多相关文章
- Java操作文件夹的工具类
Java操作文件夹的工具类 import java.io.File; public class DeleteDirectory { /** * 删除单个文件 * @param fileName 要删除 ...
- java操作文件的创建、删除、遍历
java操作文件的创建.删除.遍历: package test; import java.io.File; import java.io.IOException; import java.util.A ...
- Java操作文件
import java.io.File; import java.io.IOException; import java.nio.file.*; import java.nio.file.attrib ...
- Java操作文件Util
package io.guangsoft.utils; import java.io.File; import java.io.FileInputStream; import java.io.File ...
- java操作文件常用的 IO流对象
1.描述:流是字节数据或字符数据序列.Java采用输入流对象和输出流对象来支持程序对数据的输入和输出.输入流对象提供了数据从源点流向程序的管道,程序可以从输入流对象读取数据:输出流对象提供了数据从程序 ...
- Java操作文件那点事
刚开始学Java时候,一直搞不懂Java里面的io关系,在网上找了很多大多都是给个结构图草草描述也看的不是很懂.而且没有结合到java7 的最新技术,所以自己结合API来整理一下,有错的话请指正,也希 ...
- Java操作文件转码
package downloadTest; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.F ...
- java操作文件流对象
所有流对象 InputStream 字节流 FileInputStream 字节流 专门读写非文本文件的 BufferedInputStream 高效流 OutPutS ...
- Java删除文件夹和文件
转载自:http://blog.163.com/wu_huiqiang@126/blog/static/3718162320091022103144516/ 以前在javaeye看到过关于Java操作 ...
随机推荐
- php编译安装参数说明
http://www.cnblogs.com/52php/p/5668828.html
- mysqlbinlog快速遍历搜索记录 (转)
目标,开发人员说有个数据莫名其妙添加了,但是不知道是从哪里添加的,而且应用功能里面不应该添加这样的数据,为了查清楚来源,所 以我就准备去binlog里面找了,但是binlog有好几个月的数,我这样一个 ...
- 深入理解ThreadLocal
ThreadLocal是什么 早在JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路.使用这个工具类可以很简洁地 ...
- HBase(八): 表结构设计优化
在 HBase(六): HBase体系结构剖析(上) 介绍过,Hbase创建表时,只需指定表名和至少一个列族,基于HBase表结构的设计优化主要是基于列族级别的属性配置,如下图: 目录: BLOOMF ...
- 给Jquery动态添加的元素添加事件2
$('div').on('click', 'button', function(e){console.log($(e.target).is(':button'))}); $('<button&g ...
- jQuery制作视频网站的展示效果
效果:如图所示,用户可以单击左上角的左右箭头,来控制视频展示的左右滚动. 当单击向右箭头时下面的展示视频会向左滚动隐藏,同时新的视频展示会以滚动方式显示出来.向左同理. css: ;; word-br ...
- 51nod 1297 管理二叉树
一个初始为空的二叉搜索树T,以及1到N的一个排列P: {a1, a2, ..., aN}.我们向这个二叉搜索树T添加这些数,从a1开始, 接下来是 a2, ..., 以aN结束.在每一个添加操作后,输 ...
- bzoj4109: [Wf2015]Cutting Cheese
Description 给定一个100*100*100(单位:毫米)的奶酪方块,这个奶酪含有n个球形小孔.现在要求将这个奶酪切成s片使得每片质量相等. Input 第一行包含两个整数n,s,表示奶酪有 ...
- Avant Browser
Avant Browser Avant 浏览器友好的用户界面为你的网络冲浪带来全新的效率和透明性.软件版本的不断升级使产品的可靠性稳步提高. 没有广告.没有恶意软件! Avant 浏览器是免费的.10 ...
- Linux常见设备及相应/dev/xxx文件名、Mount Point、挂载点、Mount命令、fstab、挂载分区
Linux 中的设备有2种类型:字符设备(无缓冲且只能顺序存取).块设备(有缓冲且可以随机存取).这些设备中,有些设备是对实际存在的物理硬件的抽象,而有些设备则是内核自身提供的功能(不依赖于特定的物理 ...