JAVA——文件操作工具类封装的简单实现
生活随笔
收集整理的這篇文章主要介紹了
JAVA——文件操作工具类封装的简单实现
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
問題描述
關于文件操作的簡單工具類,包括文件夾創(chuàng)建,文件夾刪除,文件創(chuàng)建,文件重命名,文件復制,文件刪除。如果需要文件夾復制,其實就是創(chuàng)建文件夾和復制文件的操作。
解決方案
上下文
package cn.edu.zstu.fms.context;import java.io.File;/*** @author ShenTuZhiGang* @version 1.0.0* @date 2020-12-19 15:47*/ public class SystemContext {public static String real = "." + File.separatorChar+ "dir" ;public static String now="/";public static String user="";public static String userDirectory = "/"+user;public static String Charset = "UTF-8"; }接口
package cn.edu.zstu.fms.service;import cn.edu.zstu.fms.context.SystemContext;import java.io.File; import java.io.IOException;/*** @author ShenTuZhiGang* @version 1.0.0* @date 2020-12-16 19:24*/ public interface IFileManagerService {void ls();String cd(String arg);Boolean cp(String filename,String newFilename) throws IOException;Boolean mv(String filename,String newFilename);Boolean mk(String filename) throws IOException;Boolean rm(String filename);Boolean mkdir(String filename);Boolean rmdir(String filename);String cat(String filename) throws IOException;String head(String filename,Integer n);String tail(String filename,Integer n);String help();default String getNowPath(){String[] strings = SystemContext.now.split(File.pathSeparator);if(SystemContext.now.startsWith(File.separatorChar+ SystemContext.user)){return SystemContext.now.replace(File.separatorChar+ SystemContext.user,"~");}return SystemContext.now;}default String getRealPath(){return SystemContext.real + SystemContext.now;}default void createUserDirectory(){File file = new File(SystemContext.real + File.separatorChar + SystemContext.user);if(!file.exists()){file.mkdirs();}};default boolean checkUserDirectory(){File file = new File(SystemContext.real + File.separatorChar + SystemContext.user);if(!file.exists()){createUserDirectory();return true;}return true;}default void init(){if(checkUserDirectory()){SystemContext.now = File.separatorChar+ SystemContext.user;}} }實現(xiàn)
package cn.edu.zstu.fms.service.impl;import cn.edu.zstu.fms.context.SystemContext; import cn.edu.zstu.fms.service.IFileManagerService;import java.io.*; import java.nio.file.Files; import java.util.Arrays;/*** @author ShenTuZhiGang* @version 1.0.0* @date 2020-12-16 19:27*/ public class DiskFileManagerServiceImpl implements IFileManagerService {public DiskFileManagerServiceImpl(){File file = new File(SystemContext.real);if(!file.exists()){file.mkdirs();}}@Overridepublic void ls() {File file = new File(SystemContext.real + SystemContext.now );if(file.exists()){System.out.println(Arrays.toString(file.list()));}else{}}@Overridepublic String cd(String arg) {File file = new File(SystemContext.real + SystemContext.now + File.separatorChar + arg);if("..".equals(arg)){file.getParent().replace(SystemContext.real,"");}else if(file.exists() && file.isDirectory()){SystemContext.now = SystemContext.now + arg;}else{System.out.println("cd: "+arg+": No such file or directory");}return SystemContext.now;}@Overridepublic Boolean cp(String filename, String newFilename) throws IOException {File srcFile = new File(SystemContext.real + SystemContext.now + File.separatorChar + filename);File destFile = new File(SystemContext.real + SystemContext.now + File.separatorChar + newFilename); // 如果源文件不存在if(!srcFile.exists()){throw new RuntimeException("找不到源文件");} // 如果目標文件不存在if(!destFile.exists()){destFile.mkdirs();} // 如果源文件是文件if(srcFile.isFile()){ // 如果目標文件是文件if(destFile.isFile()){Files.copy(srcFile.toPath(),destFile.toPath());}// 如果目標文件是文件夾else if(destFile.isDirectory()){File newFile = new File(destFile,srcFile.getName());Files.copy(srcFile.toPath(),newFile.toPath());}} // 如果源文件是文件夾else if(srcFile.isDirectory()){if(destFile.isFile()){throw new RuntimeException("源文件是文件夾,目標文件是文件,無法進行復制");}else if(destFile.isDirectory()){File fs[] = srcFile.listFiles();for(File f:fs){File newFile = new File(destFile,f.getName()); // 如果子級文件是文件夾,則遞歸if(f.isDirectory()){cp(f.getAbsolutePath(),newFile.getAbsolutePath());}if(f.isFile()){Files.copy(f.toPath(),newFile.toPath());}}}}return true;}@Overridepublic Boolean mv(String filename, String newFilename) {File file = new File(SystemContext.real + SystemContext.now + File.separatorChar + filename);if(file.exists()){file.renameTo(new File(SystemContext.real + SystemContext.now + File.separatorChar + newFilename));file.delete();}else{return false;}return true;}@Overridepublic Boolean mk(String filename) throws IOException {File file = new File(SystemContext.real + SystemContext.now + File.separatorChar + filename);if(!file.exists()){file.createNewFile();}return true;}@Overridepublic Boolean rm(String filename) {File file = new File(SystemContext.real + SystemContext.now + File.separatorChar + filename);if(!file.exists()){file.delete();}else{return false;}return true;}@Overridepublic Boolean mkdir(String filename) {File file = new File(SystemContext.real + SystemContext.now + File.separatorChar + filename);if(!file.exists()){file.mkdirs();}return true;}@Overridepublic Boolean rmdir(String filename) {File file = new File(SystemContext.real + SystemContext.now + File.separatorChar + filename);if(!file.exists()){file.delete();}else{return false;}return true;}@Overridepublic String cat(String filename) throws IOException {File file = new File(SystemContext.real + SystemContext.now + File.separatorChar + filename);if(file.exists()){FileReader reader = new FileReader(file);char[] chars = new char[(int) file.length()];reader.read(chars);System.out.println(String.valueOf(chars));reader.close();return String.valueOf(chars);}return null;}@Overridepublic String head(String filename, Integer n) {File file = new File(SystemContext.real + SystemContext.now + File.separatorChar + filename);if(file.exists()){try {FileReader fr = new FileReader(file);BufferedReader bf = new BufferedReader(fr);String str;// 按行讀取字符串for (int i=0;i<n&&(str = bf.readLine()) != null;i++) {System.out.println(str);}bf.close();fr.close();} catch (IOException e) {e.printStackTrace();}}return null;}@Overridepublic String tail(String filename, Integer n) {File file = new File(SystemContext.real + SystemContext.now + File.separatorChar + filename);RandomAccessFile rf = null;try {rf = new RandomAccessFile(file, "r");long len = rf.length();long start = rf.getFilePointer();long nextend = start + len - 1;String line;rf.seek(nextend);int c = -1;while (nextend > start) {c = rf.read();if (c == '\n' || c == '\r') {line = rf.readLine();if (line != null) {System.out.println(new String(line.getBytes("UTF-8"), "UTF-8"));}else {System.out.println(line);}nextend--;}nextend--;rf.seek(nextend);if (nextend == 0) {// 當文件指針退至文件開始處,輸出第一行System.out.println(rf.readLine());}}} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {try {if (rf != null) {rf.close();}} catch (IOException e) {e.printStackTrace();}}return null;}@Overridepublic String help() {return null;} }參考文章
- java實現(xiàn)簡單文件操作工具類
- JAVA如何實現(xiàn)從最后一行讀取文件
- JAVA實現(xiàn)讀取文件時,從文件的最后一行往上一行行讀出來。
總結
以上是生活随笔為你收集整理的JAVA——文件操作工具类封装的简单实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JAVA——读取文本文件的倒数第N行(模
- 下一篇: 《操作系统》实验报告——主存空间的分配与