前言
记录一些java或者kotlin的文件读写的操作
文本单行读写
try { File sourceFile = new File("C:\\Users\\prize\\Desktop\\Demo1\\盗墓笔记7.txt");//创建源文件 InputStream inputStream = new FileInputStream(sourceFile);//创建输入文件流 BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); //创建文本行缓存输入流 导入 缓存输入流 File targetFile = new File("F:\\手机T卡资料\\直接复制T卡\\EBOOK\\复制的书.txt"); //创建复制的目标文件 if (targetFile.exists()) { //判断文件是否存在 targetFile.delete(); //删除文件 targetFile.createNewFile(); //创建文件 }else { targetFile.createNewFile(); } OutputStream out = new FileOutputStream(targetFile); //创建输出文件流 BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(out)); //创建文本缓存输出流 导入 缓存输出流 String aString = null; //给一行的内容准备的String int i = 0; while ((aString = reader.readLine()) != null && i<20) { //读取一行,并且赋值给aString,然后在判断不是空值 //i++; //此处是为了输出指定数量行数写的 循环自增, writer.write("\r\n"+aString); //将内容添加到输出流中 //System.out.println(aString); } writer.flush(); //刷新输出流 writer.close(); //关闭流 ,注意流的关闭顺序 out.close(); reader.close(); inputStream.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }
数据流的形式读写文件
int len = 0; byte[] bytes = new byte[2048]; while ((len = fileInputStream.read(bytes)) != -1) { fileOutputStream.write(bytes, 0, len); fileOutputStream.flush(); } fileInputStream.close(); fileOutputStream.close();
数据流的形式读写分割大文件成若干小文件
fun main() { val inputFile = File("C:\\Users\\MLoong\\Desktop\\json\\items.json") var outFile = File("C:\\Users\\MLoong\\Desktop\\json\\data0.json") println("开始") val fileInputStream = FileInputStream(inputFile) var fileOutputStream = FileOutputStream(outFile) //当前正在拷贝的文件大小 var curCopyFileSize = 0 //轮次 var round = 0 //当前轮次 var curRound = 0 val byteArray = ByteArray(1024) //单个文件两兆 val itemFileSize = 1024 * 1024 * 2 var length = 0 while (length != -1) { //判断是不是进入了新的轮次 if (curRound != round){ curRound = round curCopyFileSize = 0 fileOutputStream.flush() fileOutputStream.close() outFile = File("C:\\Users\\MLoong\\Desktop\\json\\data${round}.json") fileOutputStream = FileOutputStream(outFile) } length = fileInputStream.read(byteArray) fileOutputStream.write(byteArray, 0, length) curCopyFileSize += length //判断要不要分文件 if (curCopyFileSize >= itemFileSize) { round++ println("完成${round}") } } fileOutputStream.flush() fileOutputStream.close() fileInputStream.close() }
批量处理文件
public void fileList() {
File inFile = new File("C:\\Users\\lenovo\\Desktop\\copy\\color");
File [] files = inFile.listFiles();
for (int i = 0; i < files.length; i++) {
files[i].delete();
System.out.println(files[i].toString());
}
本文来自博客园,作者:观心静 ,转载请注明原文链接:https://www.cnblogs.com/guanxinjing/p/9708641.html
本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具