遍历所有文件
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
public class Demo {
public static List<String> fileList = new ArrayList<>();
public static void traverseFiles(String dirpath) throws IOException {
File dirFile = new File(dirpath);
if (!dirFile.exists()) {
return;
}
if (!dirFile.isDirectory()) {
fileList.add(dirFile.getCanonicalPath());
return;
}
String[] fileNames = dirFile.list();
for (String string : fileNames) {
File file = new File(dirFile.getCanonicalPath(), string);
if (file.isDirectory()) {
traverseFiles(file.getCanonicalPath());
} else {
fileList.add(file.getCanonicalPath());
}
}
}
public static void traverseZipFiles(String dirpath) throws IOException {
ZipInputStream zin = new ZipInputStream(new BufferedInputStream(new FileInputStream(new File(zipath))));
ZipEntry zipEntry;
while ((zipEntry = zin.getNextEntry()) != null) {
if (zipEntry.isDirectory()) {
} else {
fileList.add(zipEntry.getName());
}
}
zin.close();
}
}
读写文件内容
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
public class Demo {
public static void rwFileByBytes(String rfilePath, String wfilePath) throws IOException {
File rFile = new File(rfilePath);
if (!rFile.exists()) {
return;
}
File wFile = new File(wfilePath);
BufferedInputStream bin = new BufferedInputStream(new FileInputStream(rFile));
BufferedOutputStream bout = new BufferedOutputStream(new FileOutputStream(wFile));
int nextByte;
while ((nextByte = bin.read()) != -1) {
bout.write(nextByte);
}
bin.close();
bout.close();
InputStream in = new FileInputStream(rFile);
OutputStream out = new FileOutputStream(wFile);
byte[] temp = new byte[1024];
int totalNum;
while((totalNum = in.read(temp)) != -1) {
out.write(temp, 0, totalNum);
}
in.close();
out.close();
}
public static void rwFileByChars(String rfilePath, String wfilePath) throws IOException {
File rFile = new File(rfilePath);
if (!rFile.exists()) {
return;
}
File wFile = new File(wfilePath);
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(rFile)));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(wFile)));
int charRead;
while((charRead = br.read()) != -1) {
if (((char) charRead) != '\r') {
bw.write(charRead);
}
}
br.close();
bw.close();
InputStreamReader reader = new InputStreamReader(new FileInputStream(rFile));
OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(wFile));
char[] temp = new char[256];
int totalNum;
while ((totalNum = reader.read(temp)) != -1) {
if ((totalNum == temp.length) && (temp[temp.length - 1] != '\r')) {
writer.write(temp, 0, totalNum);
} else {
for (int i = 0; i < totalNum; i++) {
if (temp[i] == '\r') {
continue;
} else {
writer.write(temp[i]);
}
}
}
}
reader.close();
writer.close();
}
public static void rwFileByLines(String rfilePath, String wfilePath) throws IOException {
File rFile = new File(rfilePath);
if (!rFile.exists()) {
return;
}
File wFile = new File(wfilePath);
BufferedReader reader = new BufferedReader(new FileReader(rFile));
BufferedWriter writer = new BufferedWriter(new FileWriter(wFile));
String line = null;
while ((line = reader.readLine()) != null) {
writer.write(line);
}
reader.close();
writer.close();
}
}
压缩文件
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class Demo {
public static void compress(File file, ZipOutputStream zos, BufferedOutputStream bos, String baseDir) throws IOException {
BufferedInputStream bis = null;
try {
if (!file.exists()) {
return;
}
if (file.isFile()) {
String entryPath = file.getCanonicalPath().replace(baseDir, "");
ZipEntry entry = new ZipEntry(entryPath);
zos.putNextEntry(entry);
byte[] buffer = new byte[4096];
bis = new BufferedInputStream(new FileInputStream(file));
int len;
while ((len = bis.read(buffer)) > 0) {
bos.write(buffer, 0, len);
bos.flush();
}
} else {
File[] files = file.listFiles();
for (File f : files) {
compress(f, zos, bos, baseDir);
}
}
} finally {
if (null != bis) {
bis.close();
}
}
}
public static File createZipFile(String srcPath, String desPath) {
File file = new File(srcPath);
if (!file.exists()) {
return file;
}
File zipFile = new File(desPath);
ZipOutputStream zos = null;
BufferedOutputStream bos = null;
try {
zos = new ZipOutputStream(new FileOutputStream(zipFile));
bos = new BufferedOutputStream(zos);
compress(file, zos, bos, srcPath);
} catch (FileNotFoundException e) {
zipFile = null;
e.printStackTrace();
} catch (IOException e) {
zipFile = null;
e.printStackTrace();
} finally {
if (null != zos) {
try {
zos.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
bos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return zipFile;
}
}
解压文件
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
public class Demo {
public static void unZip(String srcPath, String desPath) {
File srcFile = new File(srcPath);
if (!srcFile.exists()) {
return;
}
InputStream ins = null;
FileOutputStream fos = null;
try {
ZipFile zipFile = new ZipFile(srcFile);
Enumeration<?> entries = zipFile.entries();
while (entries.hasMoreElements()) {
ZipEntry entry = (ZipEntry) entries.nextElement();
String path = desPath + File.separator + entry.getName();
File file = new File(path);
if (entry.isDirectory()) {
file.mkdirs();
} else {
if (!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
file.createNewFile();
ins = zipFile.getInputStream(entry);
fos = new FileOutputStream(file);
int len;
byte[] buffer = new byte[1024];
while ((len = ins.read(buffer)) != -1) {
fos.write(buffer, 0, len);
}
}
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (null != fos) {
fos.close();
}
if (null != ins) {
ins.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
一篇关于Java的IO性能的文章