File用于操作文件IO流用于读写数据1.File文件对象常用方法package com.popo.filedemo; import java.io.File; import java.io.IOException; public class FileDemo1 { public static void main(String[] args) throws Exception { // 文件对象常用方法 File f1 new File(D:\\test.txt); System.out.println(f1.exists()); System.out.println(f1.isFile()); System.out.println(f1.isDirectory()); System.out.println(f1.getName()); System.out.println(f1.length()); // 字节个数 System.out.println(f1.lastModified()); System.out.println(f1.getPath()); // 相对路径以javase2026为根目录 System.out.println(f1.getAbsolutePath()); // 绝对路径 File f2 new File(D:\\test_dir); System.out.println(f2.createNewFile()); // 创建文件返回布尔值 System.out.println(f2.mkdir()); // 创建一级文件夹 System.out.println(f2.mkdirs()); // 创建多级文件夹 System.out.println(f2.delete()); // 删除文件或空文件夹 // 遍历文件夹 File f3 new File(D:\\); String[] files f3.list(); // 保存目录中的一级文件和文件夹名称到数组中 if (files ! null) { for (String file : files) { System.out.println(file); } } File[] filesList f3.listFiles(); // 保存目录中的一级文件和文件夹对象到数组中 if (filesList ! null) { for (File file : filesList) { System.out.println(file.getName()); } } } }搜索指定文件夹下的文件package com.popo.filedemo; import java.io.File; public class FileDemo2 { public static void main(String[] args) { String path D:\\Common_software; String fileName QQ.exe; File dir new File(path); searchFile(dir, fileName); } public static void searchFile(File dir, String fileName) { // 搜索指定文件夹下的文件 File[] files dir.listFiles(); if (files ! null files.length 0) { for (File file : files) { if (file.isDirectory()) { searchFile(file, fileName); } else { if (file.getName().contains(fileName)) { System.out.println(找到文件 file.getAbsolutePath()); } } } } } }字符串的编码和解码package com.popo.filedemo; import java.io.UnsupportedEncodingException; import java.util.Arrays; public class FileDemo3 { public static void main(String[] args) throws UnsupportedEncodingException { // 字符串的编码和解码 String str Hello, 世界; byte[] bytes str.getBytes(); // 字符串编码 System.out.println(bytes.length); // 7 2 * 3 System.out.println(Arrays.toString(bytes)); String newStr new String(bytes); // 字符串解码 System.out.println(newStr); String str2 Hello, 世界; byte[] bytes2 str2.getBytes(GBK); // 字符串编码 System.out.println(bytes2.length); // 7 2 * 2 System.out.println(Arrays.toString(bytes2)); String newStr2 new String(bytes2, GBK); // 字符串解码 System.out.println(newStr2); } }2.IO流IO流分为字节流和字符流字节流适合做数据的转移因为中英文混在一起按字节读取会出现乱码字符流适合读取文本字节流字节输入流package com.popo.iodemo; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; public class FileInputStreamDemo1 { public static void main(String[] args) throws Exception { // 创建字节输入流对象 InputStream is new FileInputStream(pro_day03_file_io\\src\\com\\popo\\iodemo\\test1.txt); // 1.逐个字节读出 // int b is.read(); // while (b ! -1) { // System.out.print((char) b); // b is.read(); // } // 2.字节数组读出 byte[] bytes new byte[3]; int len; while ((len is.read(bytes)) ! -1) { System.out.print(new String(bytes, 0, len)); // aaa666bbc } // 3.读出全部字节 // byte[] allBytes is.readAllBytes(); // System.out.println(new String(allBytes)); } }字节输出流package com.popo.iodemo; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; public class FileOutputStreamDemo2 { public static void main(String[] args) throws Exception { // 创建字节输出流对象追加内容 OutputStream os new FileOutputStream(pro_day03_file_io/src/com/popo/iodemo/test2.txt, true); // 1.逐个字节写入 os.write(97); os.write(a); os.write(\r\n.getBytes()); // 2.字节数组写入 byte[] bytes 我爱Java666.getBytes(); os.write(bytes); os.write(\r\n.getBytes()); // 3.字节数组的一部分写入 os.write(bytes, 0, 3); os.write(\r\n.getBytes()); // 4.关闭流 os.close(); } }文件复制package com.popo.iodemo; import java.io.*; public class CopyDemo3 { public static void main(String[] args) { // 文件复制 copyFile(pro_day03_file_io/src/com/popo/iodemo/test2.txt, pro_day03_file_io/src/com/popo/iodemo/test3.txt); } public static void copyFile(String srcPath, String destPath) { // 使用try-with-resources语句自动关闭资源 try (InputStream is new FileInputStream(srcPath); OutputStream os new FileOutputStream(destPath);) { byte[] bytes new byte[1024]; int len; while ((len is.read(bytes)) ! -1) { os.write(bytes, 0, len); } } catch (IOException e) { e.printStackTrace(); } } }字符流文件字符输入流package com.popo.iodemo; import java.io.FileReader; import java.io.Reader; public class FileReaderDemo4 { public static void main(String[] args) { // 文件字符输入流 try (Reader fr new FileReader(pro_day03_file_io/src/com/popo/iodemo/test4.txt)) { int ch fr.read(); System.out.println((char)ch); char[] buffer new char[3]; int len; while ((len fr.read(buffer)) ! -1) { System.out.print(new String(buffer, 0, len)); } }catch (Exception e) { e.printStackTrace(); } } }文件字符输出流package com.popo.iodemo; import java.io.FileWriter; public class FileWriterDemo5 { public static void main(String[] args) { // 文件字符输出流 try (FileWriter fw new FileWriter(pro_day03_file_io/src/com/popo/iodemo/test5.txt, true)) { // 1.写字符串 fw.write(hello 世界\r\n); // 2.写字符串的一部分 fw.write(hello 世界, 6, 2); // 3.写一个字符 fw.write(a); // 4.写一个字符数组 fw.write(hello 世界.toCharArray()); // 5.写字符数组的一部分 fw.write(hello 世界.toCharArray(), 0, 2); // 6.刷新缓冲区关闭流时会自动刷新 fw.flush(); }catch (Exception e) { e.printStackTrace(); } } }缓冲字节流package com.popo.iodemo; import java.io.*; public class BufferedInputAndOutputStreamDemo6 { public static void main(String[] args) { // 文件复制 copyFile(pro_day03_file_io/src/com/popo/iodemo/test2.txt, pro_day03_file_io/src/com/popo/iodemo/test3.txt); } public static void copyFile(String srcPath, String destPath) { // 把低级的字节输入输出流包装成缓冲字节输入输出流默认的缓冲区大小为8KB // 先用底层流读出8KB的数据再从缓冲区逐次读出1KB try (InputStream is new FileInputStream(srcPath); BufferedInputStream bis new BufferedInputStream(is); OutputStream os new FileOutputStream(destPath); BufferedOutputStream bos new BufferedOutputStream(os)) { byte[] bytes new byte[1024]; int len; while ((len bis.read(bytes)) ! -1) { bos.write(bytes, 0, len); } } catch (IOException e) { e.printStackTrace(); } } }缓冲字符流缓冲字符输入流package com.popo.iodemo; import java.io.BufferedReader; import java.io.FileReader; import java.io.Reader; public class BufferedReaderDemo7 { public static void main(String[] args) { // 把低级的字符输入流包装成高级的缓冲字符输入流缓冲区大小为8KB try (Reader fr new FileReader(pro_day03_file_io/src/com/popo/iodemo/test7.txt); BufferedReader br new BufferedReader(fr); ) { String line; // 特有方法按行读取字符串 while ((line br.readLine()) ! null) { System.out.println(line); } }catch (Exception e) { e.printStackTrace(); } } }缓冲字符输出流package com.popo.iodemo; import java.io.BufferedWriter; import java.io.FileWriter; public class BufferedWriterDemo8 { public static void main(String[] args) { // 把低级的字符输出流包装成高级的缓冲字符输出流缓冲区大小为8KB try (FileWriter fw new FileWriter(pro_day03_file_io/src/com/popo/iodemo/test5.txt, true); BufferedWriter bw new BufferedWriter(fw); ) { bw.write(hello 世界); // 特有方法写入一个行分隔符 bw.newLine(); bw.write(hello 世界, 6, 2); bw.write(a); bw.write(hello 世界.toCharArray()); bw.write(hello 世界.toCharArray(), 0, 2); }catch (Exception e) { e.printStackTrace(); } } }字符输入转换流package com.popo.iodemo; import java.io.*; public class InputStreamReaderDemo9 { public static void main(String[] args) { // 解决文件编码问题 // 字符输入转换流把字节输入流转换为字符输入流按原始字节读取转换为指定字符编码的字符流 try (InputStream fis new FileInputStream(pro_day03_file_io/src/com/popo/iodemo/test9.txt); InputStreamReader isr new InputStreamReader(fis, GBK); BufferedReader br new BufferedReader(isr); ) { String line; // 特有方法按行读取字符串 while ((line br.readLine()) ! null) { System.out.println(line); } }catch (Exception e) { e.printStackTrace(); } } }打印流package com.popo.iodemo; import java.io.BufferedWriter; import java.io.FileWriter; import java.io.PrintStream; import java.io.PrintWriter; public class PrintStreamAndPrintWriterDemo10 { public static void main(String[] args) { // 打印流写什么就打印什么97不会变成a try (PrintStream ps new PrintStream(pro_day03_file_io/src/com/popo/iodemo/ps10.txt); PrintWriter pw new PrintWriter(pro_day03_file_io/src/com/popo/iodemo/pw10.txt); ) { ps.println(97); ps.println(true); ps.println(你好); }catch (Exception e) { e.printStackTrace(); } } }数据流package com.popo.iodemo; import java.io.*; public class DataOutputStreamAndDataInputStreamDemo11 { public static void main(String[] args) { // 用于通信 // 数据输出流和数据输入流写入和读取数据类型 try (DataOutputStream dos new DataOutputStream(new FileOutputStream(pro_day03_file_io/src/com/popo/iodemo/test11.txt)); DataInputStream dis new DataInputStream(new FileInputStream(pro_day03_file_io/src/com/popo/iodemo/test11.txt)) ) { dos.writeInt(100); dos.writeDouble(12.34); dos.writeUTF(hello); // 读出和写入的顺序、类型必须一致 System.out.println(dis.readInt()); System.out.println(dis.readDouble()); System.out.println(dis.readUTF()); }catch (Exception e) { e.printStackTrace(); } } }IO框架将jar包复制到lib目录下后右键将其“add to library”FileUtils和IOUtils的常用方法package com.popo.iodemo; import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; import java.io.*; public class CommonsIODemo12 { public static void main(String[] args) { try { // FileUtils的常用方法 // 1.复制文件 FileUtils.copyFile(new File(pro_day03_file_io/src/com/popo/iodemo/ci12.txt), new File(pro_day03_file_io/src/com/popo/iodemo/co12.txt)); // 2.复制文件夹 FileUtils.copyDirectory(new File(pro_day03_file_io/src/com/popo/iodemo/ci12), new File(pro_day03_file_io/src/com/popo/iodemo/co12)); // 3.删除文件夹 FileUtils.deleteDirectory(new File(pro_day03_file_io/src/com/popo/iodemo/co12)); // 4.读取文件到字符串 String content FileUtils.readFileToString(new File(pro_day03_file_io/src/com/popo/iodemo/ci12.txt), utf-8); System.out.println(content); // 5.字符串写入文件 FileUtils.writeStringToFile(new File(pro_day03_file_io/src/com/popo/iodemo/ci12.txt), content, utf-8, true); // IOUtils的常用方法 // 1.复制文件 IOUtils.copy(new FileInputStream(pro_day03_file_io/src/com/popo/iodemo/ci12.txt), new FileOutputStream(pro_day03_file_io/src/com/popo/iodemo/co12.txt)); IOUtils.copy(new FileReader(pro_day03_file_io/src/com/popo/iodemo/ci12.txt), new FileWriter(pro_day03_file_io/src/com/popo/iodemo/co12.txt)); // 2.写数据 IOUtils.write(content, new FileOutputStream(pro_day03_file_io/src/com/popo/iodemo/co12.txt), utf-8); } catch (IOException e) { e.printStackTrace(); } } }
企业数字化 ERP 产品动态
相关推荐
Python77:核心语法-面向对象基础-概述 面向过程编程核心思想:把一个需求分解成一系列要执行的步骤,然后按照步骤依次执行这些任务(关注的是流程、步骤)。适用场景:面向过程编程非常直接,适合简单、线性的任务。面向对象编程对象可以理解为现实中… · 2026/11/5 9:03:55
VS2026 打包 C++ 程序生成 EXE,借助 Installer Project 扩展工具 文章目录1. 安装 Microsoft Visual Studio Installer Projects 20222. 添加 Setup Project3. 在 File System 中添加相关文件及项目输出4. Qt 部署5. 生成桌面快捷方式6. 修改桌面快捷方式图标参考资料本文适用情况为:已经通过 visual studio 平台开发并测试好了程序… · 2026/11/5 9:03:55
生产环境 Tomcat 200 线程跑满并报连接池超时:一次虚拟线程阻塞点排查 本文摘要:开启虚拟线程后线程告警消失,HikariCP 连接池超时却更早出现。先用 JFR 事件排除 synchronized 阻塞,再按并发预算重算连接池容量。 一、问题与结论
凌晨告警:http-nio-8080-exec-* 200 个处理线程全部阻塞,… · 2026/11/5 9:02:54
平均响应两小时,对方却觉得三天没人理:企业微信聊天记录导出的效率分析攻略 月度复盘会上摆了两张纸。
左边是一张统计表,上面写着平均首次响应时长两小时十四分,比上个月快了十一分钟,看起来是件好事。右边是三段从聊天记录里摘出来的原话,最短的一段只有八个字:三天了,没人回我。
… · 2026/11/5 9:05:57
File、IO流 File用于操作文件,IO流用于读写数据1.File文件对象常用方法package com.popo.filedemo;import java.io.File;
import java.io.IOException;public class FileDemo1 {public static void main(String[] args) throws Exception {// 文件对象常用方法File f1 new Fil… · 2026/11/5 9:04:56
Python77:核心语法-面向对象基础-概述 面向过程编程核心思想:把一个需求分解成一系列要执行的步骤,然后按照步骤依次执行这些任务(关注的是流程、步骤)。适用场景:面向过程编程非常直接,适合简单、线性的任务。面向对象编程对象可以理解为现实中… · 2026/11/5 9:03:55
VS2026 打包 C++ 程序生成 EXE,借助 Installer Project 扩展工具 文章目录1. 安装 Microsoft Visual Studio Installer Projects 20222. 添加 Setup Project3. 在 File System 中添加相关文件及项目输出4. Qt 部署5. 生成桌面快捷方式6. 修改桌面快捷方式图标参考资料本文适用情况为:已经通过 visual studio 平台开发并测试好了程序… · 2026/11/5 9:03:55
生产环境 Tomcat 200 线程跑满并报连接池超时:一次虚拟线程阻塞点排查 本文摘要:开启虚拟线程后线程告警消失,HikariCP 连接池超时却更早出现。先用 JFR 事件排除 synchronized 阻塞,再按并发预算重算连接池容量。 一、问题与结论
凌晨告警:http-nio-8080-exec-* 200 个处理线程全部阻塞,… · 2026/11/5 9:02:54
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38
多智能体协作系统架构设计与实践优化 1. 多智能体协作系统的时代背景2017年Transformer架构的诞生彻底改变了人工智能的发展轨迹。当行业还沉浸在单一大模型带来的性能突破时,Anthropic的研究团队已经将目光投向了更前沿的领域——如何让多个智能体通过协作产生超越单体能力的系统智能。这就像交响乐团中… · 2026/11/5 0:00:39
大模型系统性入门实战指南:从原理到部署微调的全链路路线 提到大模型的系统性入门,我先说个结论:这事真不难,难的是资料太散、路线太多,今天这个框架明天那个工具,新人很容易在“收藏夹吃灰”和“教程看到一半放弃”之间反复横跳。市面上关于大模型的内容少说有几十万篇&#… · 2026/11/5 0:00:39
鸿蒙文件系统沙箱机制解析与开发实践 1. 鸿蒙文件系统沙箱机制深度解析作为一名从Android转向鸿蒙开发的工程师,我深刻体会到文件系统访问是迁移过程中最先遇到的"拦路虎"。在Android上运行良好的文件读写代码,在鸿蒙真机环境却频频出现文件写入后神秘消失或直接抛出权限拒绝错误的… · 2026/11/5 0:00:39
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38