java------IO流
1.IO流常见应用场景
电脑是人们生活中常见的用品,当你把u盘里面的东西拷贝到你的电脑上,那么这中间涉及到输出和输入的过程,传输过程就像流水一般不停传送资源。这就是电脑读取数据的过程,这就是所谓的输入流。
输出流也就是写数据的过程。
2.IO流相关介绍?
- 什么是IO流?读取和存储数据的解决方案 其中I表示Input O表示output 流向水一样的流动
- IO流的作用 用于读写数据
- IO流按照流向可以分为哪几种? 可以分为输出流和输入流 输出流:程序------>文件 输入流:文件--------->程序
- IO流按照操作文件的类型可以分为哪几种?可以分为两种 字节流和字符流 字节流可以操作所有类型的文件 字符流只可以操作纯文本文件
- 什么是纯文本文件? 能用记事本打开的文件 比如.md .txt lrc xml等文件
3.IO流体系
先介绍FileOutputStream:操作本地文件的字节输入流,可以把程序中的数据写到本地文件中。
//创建对象 里面可以文件对象 注意一定要保证父级路径
FileOutputStream out = new FileOutputStream("D:\\work\\java基础\\IO\\myoutputstream.txt");
//写出数据 到文件中会转换成Ascii码 out.write(97); //释放资源 out.close();
FileOutputStream out = new FileOutputStream("D:\\work\\java基础\\IO\\myoutput2.txt"); // out.write(97); // out.write(98); // out.close(); //第二种方式 一个数组直接写入 // byte[] arr1 = {97,98,99,100,101}; // out.write(arr1); // out.close(); //第三种方式定义其数组长度 byte[] arr1 = {97,98,99,100,101}; out.write(arr1,0,2); out.close();
//创建对象 进行换行操作 FileOutputStream out = new FileOutputStream("D:\\work\\java基础\\IO\\huanhang.txt"); //写入数据 String str = "lksnj"; byte[] bytes = str.getBytes(); out.write(bytes); //换行 String r = "\r\n"; byte[] bytes1 = r.getBytes(); out.write(bytes1); String str2 = "666"; byte[] bytes2 = str2.getBytes(); out.write(bytes2); //关闭资源 out.close(); //进行续写 FileOutputStream out = new FileOutputStream("D:\\work\\java基础\\IO\\huanhang.txt",true);
输入流:就是读取数据
//创建对象 FileInputStream in = new FileInputStream("D:\\work\\java基础\\IO\\a.txt"); //开始读取数据 int read1 = in.read(); System.out.println((char)read1); int read2 = in.read(); System.out.println(read2); int read3 = in.read(); System.out.println(read3); //关闭资源 in.close();
1 public class testfor { 2 public static void main(String[] args) throws IOException { 3 FileInputStream in = new FileInputStream("D:\\work\\java基础\\IO\\a.txt"); 4 int b; 5 while((b=in.read())!=-1){ 6 System.out.println((char)b); 7 } 8 in.close(); 9 } 10 }
既然可以读又可以写,那么是不是可以复制粘贴
public static void main(String[] args) throws IOException { FileInputStream in =new FileInputStream("D:\\work\\java基础\\IO\\a.txt"); FileOutputStream out = new FileOutputStream("D:\\work\\java基础\\IO\\b.txt"); int b; while((b=in.read())!=-1){ out.write(b); } out.close(); }
//创建对象 FileInputStream in = new FileInputStream("D:\\work\\java基础\\IO\\a.txt"); //写入数据 byte[] bytes1= new byte[3]; int len = in.read(bytes1); String s = new String(bytes1,0,len); System.out.println("字符串:"+s+"\t长度="+len); int len2 = in.read(bytes1); String s2 = new String(bytes1,0,len2); System.out.println("字符串:"+s2+"\t长度="+len2); int len3 = in.read(bytes1); String s3 = new String(bytes1,0,len3); System.out.println("字符串:"+s3+"\t长度="+len3); //释放资源 in.close();
long start = System.currentTimeMillis();
FileInputStream in = new FileInputStream("D:\\work\\java基础\\IO\\a.txt");
FileOutputStream out = new FileOutputStream("D:\\work\\java基础\\IO\\d.txt");
byte[] bytes = new byte[1024 * 1024 * 5];
int b;
while((b=in.read(bytes))!=-1){
out.write(bytes,0,b);
}
out.close();
in.close();
long end = System.currentTimeMillis();
System.out.println("时间相差:"+(end-start));
字符乱码
//编码过程 String str ="hello world 你好"; byte[] bytes = str.getBytes(); System.out.println(Arrays.toString(bytes)); byte[] bytes2 = str.getBytes("GBK"); System.out.println(Arrays.toString(bytes2)); //解码过程 String str1 = new String(bytes); System.out.println(str1); String str2 = new String(bytes,"GBK"); System.out.println(str2);
//创建对象 FileReader fr = new FileReader("D:\\work\\java基础\\IO\\chinese2.txt"); int ch; while((ch=fr.read())!=-1){ System.out.print((char)ch); }
char[] chars = new char[2];
while((ch=fr.read(chars))!=-1){
System.out.println(new String(chars,0,ch));
}
FileWriter fl = new FileWriter("D:\\work\\java基础\\IO\\filewrite.txt"); // fl.write(97); fl.write("我爱中国"); fl.close();
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?