JAVA文件操作工具类是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
Java常用文件工具类,常规的文本内容读写、文件移动、文件复制、文件切分、文件追加写、文件更名、分页读取等;
FileUtils.java
import java.io.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
/**
* @author JL
* @version V1.0
* @Description 文件操作工具类
* @date 2019/06/14
*/
public class FileUtils {
private static final String ENCODING = "UTF-8";
public static boolean createFile(String filePath){
File file = new File(filePath);
try{
if (file.exists()){
return true;
}
File parentFile = file.getParentFile();
if (parentFile != null && parentFile.exists()){
return file.createNewFile();
}
if (new File(file.getParent()).mkdirs()){
return file.createNewFile();
}
}catch(IOException e){
e.printStackTrace();
}
return false;
}
public static String readLine(String filePath, String encoding) {
try {
return org.apache.commons.io.FileUtils.readFileToString(new File(filePath), encoding);
} catch (IOException e) {
e.printStackTrace();
}
return "";
}
public static List<String> readLines(String filePath) {
return readLines(filePath,ENCODING);
}
public static List<String> readLines(String filePath, String encoding) {
try {
return org.apache.commons.io.FileUtils.readLines(new File(filePath), encoding);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
//分页读取文本内容
public static List<String> readPageLines(String filePath, String encoding, int startRow, int endRow) {
List<String> lines = readLines(filePath, encoding);
if (lines != null && lines.size()> endRow) {
return lines.subList(startRow, endRow);
}
return lines;
}
public static boolean copyFile(String srcPath, String targetPath) {
try {
org.apache.commons.io.FileUtils.copyFile(new File(srcPath), new File(targetPath));
return true;
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
public static boolean moveFile(String srcPath, String targetPath) {
try {
org.apache.commons.io.FileUtils.moveFile(new File(srcPath), new File(targetPath));
return true;
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
public static boolean appendFile(String filePath, String content) {
try {
org.apache.commons.io.FileUtils.write(new File(filePath),content, ENCODING , true);
return true;
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
public static boolean appendFile(String filePath, String ... contents) {
return appendFile(filePath, Arrays.asList(contents));
}
public static boolean appendFile(String filePath, Collection<?> lines) {
if (lines != null){
try {
org.apache.commons.io.FileUtils.writeLines(new File(filePath),lines, ENCODING, true);
return true;
} catch (IOException e) {
e.printStackTrace();
}
}
return false;
}
public static boolean remove(String filePath){
return org.apache.commons.io.FileUtils.deleteQuietly(new File(filePath));
}
public static boolean changeFileName(String filePath, String newFileName){
return copyFile(filePath, new File(filePath).getParent() + File.separatorChar + newFileName);
}
//将文件拆分多个
public static boolean splitFile(String filePath, int size){
if (size <= 0){
return false;
}
File file = new File(filePath);
long length = file.length();
if (length < size){
return false;
}
int byteSize = (int)(length / (long) size);//均值
int mSize = (int)(length % (long) size);//取余
String fileName = file.getName();
String newFileName = fileName.substring(0,fileName.lastIndexOf("."));
String fileSuffix = filePath.substring(filePath.lastIndexOf("."));
System.out.println("fileName:"+fileName+",fileLength:"+length+",size:"+ size +",byteSize:"+byteSize+",mSize:"+mSize);
RandomAccessFile raf = null;
OutputStream os;
try {
for (int i=0;i<size;i++){
if (i == (size -1)){
byteSize += mSize;//将剩余加到最后一个文件里
}
System.out.println("i="+i+",byteSize:"+byteSize);
raf = new RandomAccessFile(file, "r");
raf.seek(i * byteSize);
byte [] b = new byte[byteSize];
int s = raf.read(b);
if (s > 0) {
os = new FileOutputStream(file.getParent() + File.separatorChar + newFileName + i + fileSuffix);
os.write(b);
os.flush();
os.close();
}
}
return true;
}catch(IOException ioe) {
ioe.printStackTrace();
}finally{
if (raf != null) {
try {
raf.close();
} catch (IOException ioe) {
}
}
}
return false;
}
//获取目录下所有文件(含所有子目录下的文件)
public static List<String> fileList(String fileDir){
File file = new File(fileDir);
if (!file.exists()){
return null;
}
List<String> fileList = new ArrayList<>();
(new FileInterface(){
@Override
public void find(File fFile) {
File [] files = null;
if (fFile.isDirectory() && (files = fFile.listFiles()) != null){
for (File f : files) {
find(f);
}
}else {
fileList.add(fFile.getPath());
}
}
}).find(file);
fileList.forEach(f-> System.out.println(f));
return fileList;
}
interface FileInterface{
void find(File fFile);
}
public static void main(String[] args) {
// changeFileName("D:\\test\\test.txt","new.txt");
// splitFile("D:\\test\\test.txt",3);
// moveFile("D:\\test\\test.txt","F:\\test\\test.txt");
// createFile("D:\\test\\ab\\11\\test.txt");
fileList("D:\\test");
}
}
说明:
做过项目的人都知道,很多写过的可重复利用的代码块或有用的工具类没有怎么整理,当需要的时候,又得打开项目查找一翻,虽然功能开发不难,但是又得花时间成本去写去测试,这样的重复造轮子的事情太多次了;因此不如把轮子保留,供大家一起使用;
看完上述内容,你们掌握JAVA文件操作工具类是什么的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://my.oschina.net/u/437309/blog/3067970