寒假Day59:java-IO流
文件的一些相关操作:
java.io.File类 计算机系统中的文件和文件夹
File不能访问文件内容本身,访问文件内容本身需要使用输入输出流
文件流;缓冲流 数据流的读写基于内存的操作
import java.io.File; import java.io.IOException; public class B { public static void main(String[] args) {//获取文件 File f = new File("/Users/cih/Desktop/abc/tt.txt"); //System.out.println(f.getName());//获取当前文件目录,最后一级 tt.txt f.renameTo(new File("/Users/cih/Desktop/abc/tt1.txt"));//重命名操作 File f1 = new File("/Users/cih/Desktop/abc/tt2.txt"); if (!f1.exists()) { try { f1.createNewFile(); } catch (IOException e) { e.printStackTrace(); } } File f2 = new File("/Users/cih/Desktop/abc/123"); f2.mkdir();//创建单层目录。一层层创建 ,创建123文件夹 //f2.mkdirs();//直接创建多层目录 } }
注意一下:获取文件路径的时候
windows系统:打开文件所在位置,上面有一个框框复制里面的东西即可
复制过后:一个\是转义符,\\才代表一个斜杠 这个时候对象f就是tt.txt文件,\在文件中是路径的分隔符。在java中\\或者/才是文件的分隔符或者File.separator
路径例如以下这样子的写法:
D:\\text\\abc\\tt.txt
Mac系统下:
将文件拖入终端即可显示其所在位置,
注意:直接复制即可
File f = new File("/Users/cih/Desktop/abc/tt.txt");
具体方法:
IO流一定要抛异常,否则就会报错,如下:
文件字节流
具体操作写在注释里了:
import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; public class CC { public static void main(String[] args) { CC.FileInputStream(); CC.FileOutputStream(); } //文件字节输入流 public static void FileInputStream() { try { FileInputStream in = new FileInputStream("/Users/cih/Desktop/abc/tt1.txt"); byte[] b = new byte[100]; int len = 0; while ((len = in.read(b)) != -1) {//要写括号 System.out.println(new String(b, 0, len));//数组、need起始位置转换、读取长度 } in.close();//流在使用完毕后要关闭 } catch (Exception e) { e.printStackTrace(); } } //文件字节输出流 public static void FileOutputStream() { try { FileOutputStream out = out = new FileOutputStream("/Users/cih/Desktop/abc/tt3.txt"); //输出到哪一个文件里,新建tt3 String str = "jidgidjgiodjgd"; out.write(str.getBytes());//这里面需要byte类型参数,所以转化一下 //把数据写入内存中 out.flush();//把内存中的数据写到硬盘 } catch (Exception e) { e.printStackTrace(); } } }
强调:IO流一定要捕获异常
捕获操作如下:
会出现红色波浪线,鼠标放在上面;
会跳出以下内容:
点击More actions之后点击trt/catch即可
文件字符流
和文件字节流差不多,但是一些细节需要注意
import java.io.*; public class CC { public static void main(String[] args) { CC.FileReader("/Users/cih/Desktop/abc/tt1.txt"); CC.FileWriter("Hello,world!","/Users/cih/Desktop/abc/tt5.txt");//tt5本来不存在 } //文件字符输入流 public static void FileReader(String inPath) { try { FileReader fr = new FileReader(inPath);//创建字符输入流的对象 char[] b = new char[100];//创建临时存放数据的字符数组,这里是char int len = 0; while ((len = fr.read(b)) != -1) { System.out.println(new String(b, 0, len));//数组、need起始位置转换、读取长度 } fr.close(); } catch (Exception e) { e.printStackTrace(); } } //文件字符输出流 public static void FileWriter(String text,String outPath) {//输出的内容、文件 try { FileWriter fw =new FileWriter(outPath); fw.write(text); //把数据写入内存中 fw.flush();//把内存中的数据刷到硬盘 fw.close(); } catch (Exception e) { e.printStackTrace(); } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」