4.20 IO流

IO流结构

InputStream(字节输入流)

public static void main(String[] args)  {// byteInputStream();// byteInputStream1();// byteInputStream2();byteInputStream3();}// 使用字节流时对于中文汉字基本都会出现乱码问题,因此对中文乱码问题通常用字符流Reader和Writer// 字节输入流(手动关闭资源),一个一个字节读,速度较慢public static void byteInputStream() {InputStream inputStream = null;try {inputStream = new FileInputStream("C:\\Users\\21941\\Desktop\\sql.txt");int read = 0;while ((read = inputStream.read()) != -1) {System.out.print((char) read);}}catch (IOException e) {throw new RuntimeException(e);} finally {try {inputStream.close();} catch (IOException e) {throw new RuntimeException(e);}}}// 字节输入流(自动关闭资源),一个一个字节读,速度较慢public static void byteInputStream1() {try (InputStream inputStream = new FileInputStream("C:\\Users\\21941\\Desktop\\sql.txt");) {int read = 0;while ((read = inputStream.read()) != -1) {System.out.print((char) read);}} catch (IOException e) {throw new RuntimeException(e);}}// 字节输入流(自动关闭资源),一个一个字节读,将读取的先字节存入数组,一同取出,速度较快public static void byteInputStream2()  {try (InputStream inputStream = new FileInputStream("C:\\Users\\21941\\Desktop\\sql.txt");) {byte[] bytes = new byte[1024];while ((inputStream.read(bytes)) != -1) {System.out.print(new String(bytes));}} catch (IOException e) {throw new RuntimeException(e);}}// 字节输入流(自动关闭资源),一个一个字节读,将读取的先字节存入数组,一同取出,速度较快public static void byteInputStream3()  {try (InputStream inputStream = new FileInputStream("C:\\Users\\21941\\Desktop\\sql.txt");) {byte[] bytes = new byte[1024];int temp=0;while ((temp=inputStream.read(bytes)) != -1) {// 防止读到最后时不能全部覆盖之前的,输出每一次读取的内容System.out.print(new String(bytes,0,temp));}} catch (IOException e) {throw new RuntimeException(e);}}

OutputStream(字节输出流)

public static void OutputStream(){// 没有文件则自动新建/*OutputStream outputStream = new FileOutputStream(路径)OutputStream outputStream = new FileOutputStream(路径,是否追加(默认false))*/try (OutputStream outputStream = new FileOutputStream("D:\\soft\\javawork\\javawork\\one\\four\\src\\com\\tianliang\\io0\\outputstream.txt")){outputStream.write(97);byte[] bytes = {10,23,52,99,45,3,15};outputStream.write(bytes);// outputStream.write(字节数组/整形/字节数组,偏移量,长度);// 输出流需要刷新outputStream.flush();}catch (IOException e){e.printStackTrace();}}

Reader(字符输入流)

public static void reader(){// 用自动关闭方式try (Reader reader = new FileReader("C:\\Users\\21941\\Desktop\\sql.txt")){char[] chars = new char[1024];int temp=0;while ((temp =reader.read(chars))!=-1){System.out.print(new String(chars,0,temp));// reader.read(字符数组/字符数组,偏移量,长度);}}catch (IOException e) {throw new RuntimeException(e);}}

Writer(字符输出流)

/*FileWriter writer = new FileWriter(路径)FileWriter writer = new FileWriter(路径,是否追加(默认false))*/public static void writer() {try (Writer writer = new FileWriter("D:\\soft\\javawork\\javawork\\one\\four\\src\\com\\tianliang\\io0\\writer.txt")) {writer.write(97);String string = "你好";writer.write(string);char[] chars = {'A', 'S', 'G', 'H', 'T', 'E', 'F', 'd', 'g', 'b', 'n', 'm', '中', '国'};writer.write(chars);writer.flush();} catch (IOException e) {throw new RuntimeException(e);}}

InputStreamReader(字节输入转字符输入流)

处理字节乱码问题,也可以处理编码乱码问题

public static void main(String[] args) {// 转换流,还可以通过设置字符编码解决乱码try {FileInputStream fis = new FileInputStream("E:/test.txt");// 转换的时候,还可以指定字符编码,用于解决乱码问题// 默认UTF-8InputStreamReader isr = new InputStreamReader(fis,"GBK");InputStreamReader isr = new InputStreamReader(fis,编码);int temp = 0;while ((temp = isr.read()) != -1) {System.out.print((char)temp);}} catch (Exception e) {e.printStackTrace();}}
public static void main(String[] args) {try (// 字节输入流FileInputStream fis = new FileInputStream(路径);// 转换为字符输入流,为什么不是FileReader类型呢?// 因为FileReader 继承了InputStreamReader 所以一样InputStreamReader isr = new InputStreamReader(fis);){// 和字符输入流使用方式一样// 读取char数组// isr.read(chars);// 读取一个字符// isr.read();} catch (Exception e) {e.printStackTrace();}}

OutputStreamWriter(字节输出转字符输出流)

public static void main(String[] args) {try (// 字节输出流FileOutputStream fos = new FileOutputStream(路径);// 转换为字符输出流OutputStreamWriter osw = new OutputStreamWriter(fos);){// 和字符输出流用法一样osw.write("xxx");osw.flush();} catch (Exception e) {e.printStackTrace();}}

BufferedReader(字符输入缓冲流)

提高读取速度,增加按行读的方法readLine();剩余使用方法和字符输入流一样

public static void main(String[] args) {try (// 字符输入流,传入文件路径FileReader fr = new FileReader(路径);// 字符输入缓冲流,传入字符输入流BufferedReader br = new BufferedReader(fr);){// 使用方式和字符输入流一样// br.read();// br.read(chars)// 新增读取一行的方法,返回读取到的这一行数据// 到达文件末尾,返回null// String temp = br.readLine();String temp = null;while ((temp=br.readLine()) != null) {System.out.println(temp);}} catch (Exception e) {e.printStackTrace();}}

BufferedWriter(字符输出缓存流)

增加写出速度,增加换行写出方法newLine();其余方式使用和字符输出流一样

public static void main(String[] args) {try (// 字符输出流,传入文件路径,和 是否覆盖写入FileWriter fw = new FileWriter("./src/com/test.txt");// 字符输出缓冲流,传入字符输出流对象BufferedWriter bw = new BufferedWriter(fw);){// 用法和字符输出流一样// bw.write(chars);// bw.write(int);// bw.write("xx");// 新增写出换行的方法bw.newLine();// 刷缓存bw.flush();} catch (Exception e) {e.printStackTrace();}}

测试字符流与字符缓存流速度

public static void main(String[] args) {fileInputStreamTest(路径);bufferedFileInputStreamTest(路径);}public static void fileInputStreamTest(String path){long startTime = System.currentTimeMillis();try (FileInputStream fis =new FileInputStream(path);){int temp = 0;byte[] bytes = new byte[1024];while ((temp = fis.read(bytes)) != -1) {}} catch (Exception e) {e.printStackTrace();}long endTime = System.currentTimeMillis();System.out.println("读取完成,字节输入流耗时 : "+(endTime-startTime));}public static void bufferedFileInputStreamTest(String path){long startTime = System.currentTimeMillis();try (FileInputStream fis =new FileInputStream(path);BufferedInputStream bis = new BufferedInputStream(fis);){int temp = 0;byte[] bytes = new byte[1024];while ((temp = bis.read(bytes)) != -1) {//写入时需要执行的内容}} catch (Exception e) {e.printStackTrace();}long endTime = System.currentTimeMillis();System.out.println("读取完成,字节输入缓冲流耗时 : "+(endTime-startTime));}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/637594.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

05 MySQL--字段约束、事务、视图

1. CONSTRAINT 约束 创建表时,可以给表的字段添加约束,可以保证数据的完整性、有效性。比如大家上网注册用户时常见的:用户名不能为空。对不起,用户名已存在。等提示信息。 约束包括: 非空约束:not null检…

【精】Devops实战学习CI/CD落地方案#CI篇#

目录 先有个大概了解 基本概念 CI/CD Devops 阿里云效 devops产品 K8s jenkins docker git maven 知行合一,上手操作 实操记录 安装VMware 安装并配置虚拟机 安装并配置docker docker安装 修改镜像源(关键且易出错) CentOS…

Vue3 + Js + Element-Plus + VueX后台管理系统通用解决方案

前言 本文是作为学习总结而写的一篇文章,也是方便以后有相关需求,可以直接拿来用,也算是记录吧,文中有一些文件的引入,没给出来,完整项目地址(后续代码仓库放这里) 1、layout解决方…

公司卓越之路:七种关键成功因素深度解析

引言 在竞争激烈的市场环境中,公司的成功并非偶然,而是多种因素的共同作用。本文将详细探讨公司优秀的七大关键成功因素,并结合实际案例,对这些因素进行深入分析。 公司优秀的原因七种关键成功因素 1.成功的企业关注:关注少而精的…

4月阿里offer被毁,我该怎么进字节?

在校招求职的浪潮中,有些故事总是让人唏嘘不已。比如最近在社交平台上广泛讨论的一个话题:“4月阿里offer被毁,我该怎么进字节?”这不仅反映了当下职场的变动性,也映射了求职者在面对突如其来的变故时的无助与挣扎。 …

开发实战(5)--fofa进行漏洞poc的信息收集

目录 前言 安全开发专栏 个人介绍 编写详情 1.1 了解结构 1.2 发起请求 1.2.1 请求头 1.2.2 进行请求 1.2.3 提取数据,并进行存储 方式一: 方式二: 1.3 完整代码(爬取一页) 1.4 突破注册会员限制批量采集(爬取指定数量页面) ​总结 前言 主要还是围绕渗透测试的…

贝叶斯分类 python

贝叶斯分类 python 贝叶斯分类器是一种基于贝叶斯定理的分类方法,常用于文本分类、垃圾邮件过滤等领域。 在Python中,我们可以使用scikit-learn库来实现贝叶斯分类器。 下面是一个使用Gaussian Naive Bayes(高斯朴素贝叶斯)分类器的简单示例&#xff1…

STL-list的使用及其模拟实现

在C标准库中,list 是一个双向链表容器,用于存储一系列元素。与 vector 和 deque 等容器不同,list 使用带头双向循环链表的数据结构来组织元素,因此list插入删除的效率非常高。 list的使用 list的构造函数 list迭代器 list的成员函…

目标检测综述

2D图像的目标检测是深度学习的热门领域, 在学术研究领域取得了巨大的进展,在工程中也被广泛应用。 按照stage划分, 主要可以分为one-stage 和two-stage 算法。 近年来, 随着transformer的流行, 基于transformer的检测…

还在找投稿邮箱?推荐一个靠谱的投稿平台给你

亲爱的朋友: 听说你还在为单位的信息宣传投稿考核而烦恼,四处寻找投稿邮箱,却屡屡碰壁,是吗?别着急,作为过来人,我想给你推荐一个靠谱的投稿平台——智慧软文发布系统网站。相信它能帮你轻松完成考核任务,让你的稿件更快更好地被媒体采纳。 想当年,我也曾像你一样,为了完成单…

代码随想录算法训练营第三十二天|122.买卖股票的最佳时机II,55. 跳跃游戏,45.跳跃游戏II

目录 122.买卖股票的最佳时机II思路代码 55. 跳跃游戏思路代码 45.跳跃游戏II思路代码 122.买卖股票的最佳时机II 题目链接:122.买卖股票的最佳时机II 文档讲解:代码随想录 视频讲解:贪心算法也能解决股票问题!LeetCode&#xff1…

单链表的介绍

链表是一种常见的线性数据结构,用于存储一系列元素。它由一系列节点组成,每个节点包含两部分:数据域和指针域。其中,数据域用于存储元素的值,指针域用于指向下一个节点。 单链表的特点包括: 节点组成&…