目录

一、需求:

二、实现:

1、完成创建文件,写入文件

2、读取文件

3、删除文件

测试:

注意:

java的split方法分割字符串(分隔符如* | . ^ )及注意点


一、需求:

1、创建文件夹,以规定格式保存信息到指定文件,并存放在相应目录下

2、在保存的目录下读取拿到的文件内容

3、读取文件完毕后将文件删除

二、实现:

1、完成创建文件,写入文件

package com.cn.utils;import com.cn.Mybatis.pojo.Student;import java.io.*;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;/*** @ClassName CreateFileUtils* @Description TODO 在指定目录下存入文件* @Author WYD* @Date 2022/9/21 22:45* @Version 1.0*/
public class CreateFileUtils {/** @Author WYD* @Description //TODO 在指定路径下创建文件夹及文件* @Date 2022/9/21* @Param []* @Version 1.0* @return void**/public static void createFile() throws Exception {try {//当前系统时间String workDateStr = formatDateToString(new Date(), "yyyyMMdd");//本地文件地址String loaclAddress = "E:\\file";//文件存放路径String realAddr = loaclAddress + File.separator + workDateStr + File.separator + "createFile";File file = new File(realAddr);//判断文件路径是否存在if (!file.exists()) {//如果不存在,则创建file.mkdirs();}String fileFlagName = "FacAcceptDuebill" + workDateStr + ".FLG";String fileDataName = "FacAcceptDuebill" + workDateStr + ".dat";//标记文件File fileFlag = new File(realAddr + File.separator + fileFlagName);fileFlag.createNewFile();//数据文件File fileData = new File(realAddr + File.separator + fileDataName);fileData.createNewFile();//初始化文件信息  --》》》业务操作List<Student> list = new ArrayList<>();//实例化对象Student s1 = new Student();s1.setName("张三");s1.setAge(19);s1.setType("A");Student s2 = new Student();s2.setName("李四");s2.setAge(12);s2.setType("A");list.add(s1);list.add(s2);//文件内容String strFileContent = buildFileStr(list);System.out.println("组装后的文件信息:" + strFileContent);//新建文件newFile(realAddr + File.separator + fileDataName, strFileContent, true);//****写到 本地文件Writer writer = new OutputStreamWriter(new FileOutputStream(fileData), "UTF-8");writer.write(strFileContent);writer.close();} catch (Exception e) {throw new Exception("文件写入异常");}}/*** 方法说明: 新建文件** @param filePathAndName 文件路径及名称 如c:/abc/a.txt* @param fileContent     文件内容* @return* @author E-mail: pengdaochang@mrhc.com.cn* @date 2008-9-17 下午03:09:09*/public static void newFile(String filePathAndName, String fileContent, boolean isAppend) {try {String filePath = filePathAndName;filePath = filePath.toString();File myFilePath = new File(filePath);if (!myFilePath.exists()) {myFilePath.createNewFile();}FileWriter resultFile = new FileWriter(myFilePath, isAppend);PrintWriter myFile = new PrintWriter(resultFile);String strContent = fileContent;myFile.println(strContent);resultFile.close();} catch (Exception e) {System.out.println("新建目录操作出错");e.printStackTrace();}}/*** 格式化文件  拼接文件 "|"分割开(需求)** @return void* @Author WYD* @Description //TODO 拼接文件 "|"分割开* @Date 2022/9/21* @Param [resut, workDateStr]* @Version 1.0**/public static String buildFileStr(List<Student> studentList) {StringBuffer fileStr = new StringBuffer();/************************************组装文件*****************************/for (int i = 0; i < studentList.size(); i++) {Student student = studentList.get(i);String separator = "|";fileStr.append(student.getName()).append(separator);fileStr.append(student.getType()).append(separator);if (i == studentList.size() - 1) {fileStr.append(student.getAge()).append(separator);} else {//换行fileStr.append(student.getAge()).append(separator).append("\r\n");}}return fileStr.toString();}/*** @return java.lang.String* @Author WYD* @Description //TODO  date---> String* @Date 2022/9/21* @Param [date类型的日期, 格式化类型]* @Version 1.0**/public static String formatDateToString(Date date, String format) {SimpleDateFormat sdf = new SimpleDateFormat(format);return sdf.format(date);}}

2、读取文件

package com.cn.utils;import com.cn.Mybatis.pojo.Student;
import lombok.extern.log4j.Log4j2;import java.io.*;
import java.util.*;/*** @ClassName ReadFileUtils* @Description TODO 读取项目下某文件夹下的文件* @Author WYD* @Date 2022/9/21 23:35* @Version 1.0*/
@Log4j2
public class ReadFileUtils {/*** 读取文佳佳下的某个文件*      1、可重新写入指定文件*      2、可作为对象继续传递* E:\file\20220924\createFile\FacAcceptDuebill20220924.txt** @param fileData* @throws Exception*/public static void readFileAndUpdateCustRisk(String fileData) throws Exception {//TODO// JAVA中 “|“和“.“作为分隔符分割字符串无法拆分的问题  -->  "|" 和 "."在Java中有特殊的意义(这种是拆分不了的,需要转义)String separator = "\\|";BufferedReader reader = null;try {//读取文件路径InputStream inputStream = new FileInputStream(fileData);//设置防止乱码格式InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf8");//读取文件reader = new BufferedReader(inputStreamReader);//创建学生集合List<Student> list = new ArrayList<Student>();String riskStr = "";//标题行String title = null;//行数int in = 0;//学生对象Student student = null;while ((riskStr = reader.readLine()) != null) {//每次循环创建新的学生对象student = new Student();//获取标题行if (in == 0) {title = riskStr;System.out.println(title);/**  123|sadasd|wangyandeng|lilullu|*/in = 1;} else {System.out.println(riskStr);/**  张三|A|19|*  李四|A|12|*  王五|B|21|*/String[] split = riskStr.split(separator);//设置属性student.setName(split[0]);student.setType(split[1]);student.setAge(Integer.parseInt(split[2]));list.add(student);}}System.out.println(list);/** [Student(name=张三, age=19, type=A), Student(name=李四, age=12, type=A), Student(name=王五, age=21, type=B)]*///遍历for (Student s : list){System.out.println(s.getName()+"..."+s.getAge()+"..."+s.getType());/** 张三...19...A* 李四...12...A* 王五...21...B*/}//集合排序使用匿名内部类CollectionsCollections.sort(list, new Comparator<Student>() {@Overridepublic int compare(Student o1, Student o2) {// TODO Auto-generated method stub// 排序主要条件:按成绩排序int num = o1.getAge() - o1.getAge();return num;}});//写入指定文件夹BufferedWriter bw = new BufferedWriter(new FileWriter("E:\\file\\20220924\\createFile\\测试.txt"));// 写入标题行bw.write(title + "\n");for (Student s : list) {bw.write(s.getName()+"|"+s.getAge()+"|"+s.getType()+"|");bw.newLine();}bw.close();} catch (Exception e) {log.error("读取失败", e);throw new Exception("读取失败" + e.getMessage());} finally {if (reader != null) {reader.close();}}}public static void main(String[] args) {String s = "asdas|sadasd|546";String[] split = s.split("\\|");System.out.println(split[0]);}
}

3、删除文件

package com.cn.utils;import java.io.File;/** @ClassName DeleteFileUtils* @Description TODO 删除指定目录下所有的文件* @Author WYD* @Date 2022/9/21 22:33* @Version 1.0*/
public class DeleteFileUtils {// 删除文件夹// param folderPath 文件夹完整绝对路径public static void delFolder(String folderPath) {try {// 删除完里面所有内容delAllFile(folderPath);String filePath = folderPath;filePath = filePath.toString();File myFilePath = new java.io.File(filePath);//删除空文件夹myFilePath.delete();} catch (Exception e) {e.printStackTrace();}}// 删除指定文件夹下所有文件// param path 文件夹完整绝对路径public static boolean delAllFile(String path) {boolean flag = false;File file = new File(path);if (!file.exists()) {return flag;}if (!file.isDirectory()) {return flag;}String[] tempList = file.list();File temp = null;for (int i = 0; i < tempList.length; i++) {if (path.endsWith(File.separator)) {temp = new File(path + tempList[i]);} else {temp = new File(path + File.separator + tempList[i]);}if (temp.isFile()) {temp.delete();}if (temp.isDirectory()) {delAllFile(path + "/" + tempList[i]);// 先删除文件夹里面的文件delFolder(path + "/" + tempList[i]);// 再删除空文件夹flag = true;}}return flag;}
}

测试:

import com.cn.utils.CreateFileUtils;
import com.cn.utils.DeleteFileUtils;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;import java.io.IOException;/*** @ClassName FileTest* @Description TODO* @Author WYD* @Date 2022/9/21 22:39* @Version 1.0*/
public class FileTest {@AutowiredDeleteFileUtils deleteFileUtils;@AutowiredCreateFileUtils createFileUtils;//删除本地指定目录下的文件@Testpublic void deleteTest(){//文件绝对路径deleteFileUtils.delFolder("E:\\file");System.out.println("OK");}//写入文件@Testpublic void createFile() throws IOException {createFileUtils.createFile();System.out.println("ok");}//读取文件@Testpublic void readHile() throws Exception{String fileData = "E:\\file\\20220924\\createFile\\FacAcceptDuebill20220924.txt";readFileUtils.readFileAndUpdateCustRisk(fileData);System.out.println("ok");}}

注意:

java的split方法分割字符串(分隔符如* | . ^ )及注意点

1、split表达式,其实就是一个正则表达式。* | . ^ 等符号在正则表达式中属于一种有特殊含义的字符,如果使用此种字符作为分隔符,必须使用转义符即\加以转义。

String add1="南京*建邺区";
String[] splitAdd1=add1.split("\\*");
System.out.println(splitAdd1[0]+splitAdd1[1]);String add2="南京|建邺区";
String[] splitAdd2=add2.split("\\|");
System.out.println(splitAdd2[0]+splitAdd2[1]);String add3="南京.建邺区";
String[] splitAdd3=add3.split("\\.");
System.out.println(splitAdd3[0]+splitAdd3[1]);String add4="南京^建邺区";
String[] splitAdd4=add4.split("\\^");
System.out.println(splitAdd4[0]+splitAdd4[1]);

2、如果使用多个分隔符则需要借助 | 符号。

String address="南京1^南京2*南京3#南京4|南京5";
String[] splitAddress=address.split("\\^|\\*|#|\\|");
System.out.println(splitAddress[0]+splitAddress[1]+splitAddress[2]+splitAddress[3]+splitAddress[4]);

Java代码实现本地创建文件,读取文件,删除指定目录下的文件相关推荐

  1. php定时删除目录,shell定时删除指定目录下的文件

    contab -e 10 */12 * * * sh /usr/local/apache2/htdocs/cakephp/ebook/webroot/php/delete_big_log.sh 代码: ...

  2. Linux 删除指定目录下的文件/删除文件

    文章目录 删除当前目录下的所有类型的文件 删除指定目录下的所有类型的文件 用 find 命令在当前目录下查找普通文件并删除 用 find 命令在指定目录下查找普通文件并删除 用 find 命令的处理动 ...

  3. php获取指定目录下所有文件列表,PHP 获取指定目录下所有文件(包含子目录)...

    set DestPath=.for /f "delims=" %%i in ('dir /ad /b ' ) do (copy %DestPath%\%%i\*.txt %Dest ...

  4. java删除指定目录下文件_Java中循环删除指定目录下的文件

    Java中删除目录下的文件需要实现递归删除: private static void RecuErsionDeleteDisk(File file) { File[] files = file.lis ...

  5. C# 删除指定目录下全部文件

    void DelectDir(string srcPath){try{DirectoryInfo dir = new DirectoryInfo(srcPath);FileSystemInfo[] f ...

  6. C语言如何编程实现删除指定文件,c语言删除指定目录下的所有文件

    复制内容到剪贴板 代码:#include #include #include #include #include #include //判断是否是".."目录和".&qu ...

  7. 【JAVA】删除指定目录下文件、文件夹

    今天遇到一个删除指定目录下的文件和文件夹的功能,直接上代码吧! import java.io.File;/*** @version 2019/4/12 9:35* @description Test* ...

  8. php删除目录文件内容,php清空(删除)指定目录下的文件,不删除目录文件夹的实现代码...

    搜索热词 web 开发中我们可能会碰到需要将某个目录下的所有文件清空,但不删除这个目录下的子目录(当然也不会删除被删除的根目录)的情况.那么对于这种只删除文件而不删除目录的方法,你是如何处理的呢?下面 ...

  9. linux怎么在目录下查找文件,linux find-在指定目录下查找文件

    find命令用来在指定目录下查找文件.任何位于参数之前的字符串都将被视为欲查找的目录名.如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件.并且将查找到的子目录和文件全部进 ...

最新文章

  1. 顺时针打印矩阵 python
  2. HTTPS网络加密双向验证-使用AFNetworking封装
  3. css3价格斜切_CSS3倾斜skew()方法_CSS3教程_绿叶学习网
  4. 港大徐爱民组研究助理招聘-内分泌代谢方向
  5. “治沙女杰”殷玉珍:和沙漠较量的女人
  6. Oracle数据文件、用户、schema、实例
  7. Java标识符首字母可以是哪些_Java编程中你不知道的一些标识符有哪些呢?
  8. 职业技术学校计算机专业部教师,江安职校计算机专业部召开第二次全体教师大会...
  9. 中间件系列「三」netty之NIO基础
  10. MySQL的Found_ROWS函数介绍
  11. Simple DNS Plus 5.2 build 117
  12. 天津计算机的专科学校,天津市电子计算机职业中等专业学校
  13. vs2017python开发_VS2017作为python开发的IDE
  14. C#中异步多线程的常见用法
  15. python正则计算器(转)
  16. 创业失败反思:吾亦有大错,错在哪里?
  17. C语言实战例题:必会的 10 个C语言经典练习题,源码分享
  18. ESP32-CAM模块网络摄像头demo加装舵机控制教程
  19. 前端页面实现在线预览文档Word、Excel、PPT、PDF
  20. dev、test 和 prod 是什么意思?

热门文章

  1. 计算机专业英语影印版答案,计算机专业英语(2008影印版)OPEN-ENDED答案
  2. android启动速度测试,如何测试Android应用的启动速度?
  3. 用python爬荣耀皮肤图片(爬虫最基础题,python爬虫教程,超详细+完整代码)
  4. l5630鲁大师跑分_鲁大师怎么跑分?鲁大师跑分详细教程
  5. Linux获取以毫秒为单位的当前时间
  6. c语言程序题文件损坏,磁盘的文件系统结构已损坏且无法使用。请在卷C上运行CHKDSK工具...
  7. 10天用Flutter撸了个高仿携程App,含小米、腾讯、阿里
  8. UE4-(场景)后期盒子(PostProcessVolume)之镜头眩光(Lens Flares)、景深(Depth of Field)、图像效果(Image Effects)
  9. nextjs12支持less
  10. 使用GDI+将24位真彩色图像转换为8位灰度图像