日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JAVA——文件操作工具类封装的简单实现

發布時間:2024/10/5 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JAVA——文件操作工具类封装的简单实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題描述

關于文件操作的簡單工具類,包括文件夾創建,文件夾刪除,文件創建,文件重命名,文件復制,文件刪除。如果需要文件夾復制,其實就是創建文件夾和復制文件的操作。

解決方案

上下文

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;}} }

實現

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實現簡單文件操作工具類
  • JAVA如何實現從最后一行讀取文件
  • JAVA實現讀取文件時,從文件的最后一行往上一行行讀出來。

總結

以上是生活随笔為你收集整理的JAVA——文件操作工具类封装的简单实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。