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.RandomAccessFile;
import java.util.ArrayList;
import java.util.List;
import org.laya.io.IOUtils;
/**
* 文件操作工具类
*/
public class FileUtil {
/**
* 创建文件夹
* @param path
* @return
*/
public static File createPath(String path){
File file = new File(path);
if(!file.exists()){
file.mkdirs();
}
return file;
}
/**
* 创建文件
* @param path
* @param fileName
*/
public static File createFile(String path,String fileName){
File dirs = new File(path);
if(!dirs.exists()){
dirs.mkdirs();
}
File file = new File(path+File.separator+fileName);
if(!file.exists()){
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
return file;
}
/**
* 判断是否存在
* @param path
* @param fileName
* @return
*/
public static boolean isExist(String path,String fileName){
File dirs = new File(path);
if(!dirs.exists()){
return false;
}
File file = new File(path+fileName);
if(!file.exists()){
return false;
}
return true;
}
/**
* 清空文件内容
* @param file
*/
public static void clear(File file){
FileWriter fw;
try {
fw = new FileWriter(file);
fw.write("");
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 向文件中写入数据
* @param file
* @param str
*/
public static void write(File file,String str){
FileWriter fw;
try {
fw = new FileWriter(file);
fw.write(str);
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* A方法追加文件:使用RandomAccessFile
*/
public static void appendMethod(String fileName, String content) {
try {
// 打开一个随机访问文件流,按读写方式
RandomAccessFile randomFile = new RandomAccessFile(fileName, "rw");
// 文件长度,字节数
long fileLength = randomFile.length();
//将写文件指针移到文件尾。
randomFile.seek(fileLength);
randomFile.writeBytes(content);
randomFile.close();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* B方法追加文件:使用FileWriter
*/
public static void append(File file, String content) {
String fileName = file.getAbsolutePath();
try {
//打开一个写文件器,构造函数中的第二个参数true表示以追加形式写文件
FileWriter writer = new FileWriter(fileName, true);
writer.write(content);
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 以行为单位读取文件,常用于读面向行的格式化文件
*/
public static List<String> readFileByLines(File file) {
List<String> list = new ArrayList<String>();
BufferedReader reader = null;
try {
// System.out.println("以行为单位读取文件内容,一次读一整行:");
reader = new BufferedReader(new FileReader(file));
String tempString = null;
// int line = 1;
// 一次读入一行,直到读入null为文件结束
while ((tempString = reader.readLine()) != null) {
// 显示行号
// System.out.println("line " + line + ": " + tempString);
list.add(tempString);
// return tempString;
// line++;
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e1) {
}
}
}
return list;
}
/**
* 以行为单位向文件中写入内容
* @param path
* @param filename
* @param list 内容集合
* @return
*/
public static File writeFileByLines(File file,List<String> list) {
try {
FileWriter fw= new FileWriter(file);
BufferedWriter bw=new BufferedWriter(fw);
for (String string : list) {
bw.write(string+"\t\n");
}
bw.close();
fw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return file;
}
/**
* 复制单个文件
* @param oldPath String 原文件路径 如:c:/fqf.txt
* @param newPath String 复制后路径 如:f:/fqf.txt
* @return boolean
*/
public void copyFile(String oldPath, String newPath) {
try {
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];
int length;
while ((byteread = inStream.read(buffer)) != -1) {
bytesum += byteread; // 字节数 文件大小
System.out.println(bytesum);
fs.write(buffer, 0, byteread);
}
inStream.close();
}
} catch (Exception e) {
System.out.println("复制单个文件操作出错");
e.printStackTrace();
}
}
/**
* 删除本级 以及内部的文件
* @param path
*/
public static void delFiles(File file) {
if(file==null){
return;
}
try {
if (file.isDirectory()) {
String[] chlidren = file.list();
for (int i = 0; i < chlidren.length; i++) {
IOUtils.forceDelete(new File(file+File.separator+chlidren[i]));
}
}
IOUtils.forceDelete(file);
} catch (IOException e) {
e.printStackTrace();
}
}
}
关于文件File操作的工具类
最新推荐文章于 2024-05-12 06:27:58 发布