java基础入门之IO流
作者:scanner小霸王 发布时间:2022-08-17 00:09:20
io学习框架:
文件:
保存数据的地方。
1)常见文件对象的相关构造器和方法:
当进行File file = new File(filePath);只是在内存上有一个文件对象;
只有file.createNewFile();才会在磁盘创建文件
获取文件的相关信息:
utf8中,一个汉字是三个字节,所以当用字节流的read()方法一个字节一个字节的读取的时候,将会出现乱码的情况
2)目录的删除和增加:
a)用来删除文件或者文件夹
b)文件夹的创建:
Io流的原理:
流的分类:
字节流适用于声音等文件的传输,因为字节流是一个字节一个字节的读取,可以保证无损;
字符流虽然读取的效率高些,但更适用于文本的读取;
注意:inpuStream,OutputStream,Reader,Writer全是抽象类,创建对象时候要实现他们的子类即可。
1)InputSream输入流:
字节输入流:文件–》程序
a)fileInputStream.read()一个一个字节读取
(注意:输出的时候不能像如图框选的那样输出,因为read()读取的是下一个字符了)
b)改进,使用fileInputStream.read(buffer)
2)OutputStream
注意:如果使用OutputStream写入数据时候,文件不存在将自动进行文件的创建;
以下是写入数据的几种方式,
当使用红框的语句的时候,写入数据会追加在文件中;
否则,将覆盖文件的内容
完成文件的拷贝:(需要输入流和输出流的综合应用)
3)FileReader:
1)FileReader的使用:
4) FileWriter:
使用filewriter后,必须关闭(close)或者刷新(flush),否则写入不到指定文件
a)FileWriter的使用:
使用filewriter后,必须关闭(close)或者刷新(flush),否则写入不到指定文件
close()相当于flush()+关闭
节点流和处理流:
1)节点流:直接读取数据源的流
2)处理流:对节点流进行包装
例如BufferReader:
readLine()是按行读取:
当返回null时候,表示文件读取完毕;
关闭流的时候,这里只需要关闭BufferReader,因为底层会自动去关闭节点流;
BufferWriter:
注意:如果需要追加在文件的话,是在节点流进行设置;
newLine()插入一个换行符
两者的区别与联系:
BufferReader和BufferWriter实现文件拷贝:
注意:BufferReader和BufferWriter是安装字符操作;
不要操作二进制文件(声音,视频,doc,pdf,等等),可能会造成文件损坏
处理字节的处理流:
BufferedOutputStream和BufferedInputStream实现拷贝图片:
当然,除此之外,BufferedOutputStream和BufferedInputStream也可以实现文本的拷贝;
对象处理流:专门处理对象的流,专门把对象保存到文件中,并且能够从文件中恢复;
序列化:就是保存数据的时候,保存数据的值和数据类型;
标记接口:没有任何方法
1)ObjectInputStream:(也是包装流)
示例:
2)ObjectOutputStream:
示例:
序列化之后,保存的文件格式,不是纯文本,而是按照他的格式来存储
当反序列化的时候需要用到getName();toString()等方法的时候,序列化也要一并把这些方法存储进行;
对象流注意事项:
标准输入和输出:
标准输入,从键盘是获取:Scanner scanner = new Sanner(System.in);
转换流:
InputStreamReader:字节流转化(包装)为字符流;
1)**OutputStreamReader:**字节流转化(包装)为字符流;
打印流:
(只有输出流,没有输入流)
PrintStream和PrintWriter(可以把信息打印到文件里面)
1)PrintStream
2)PrintWriter
PrintWriter可以传入一个输出流,这里System.out是标准输出
Properties类:
1)传统的处理方法(使用处理流加载配置文件),不方便:
2)Properties方式:
来源:https://blog.csdn.net/weixin_42063820/article/details/117869178


猜你喜欢
- 一、前言用过Spring Cloud的同学都知道在使用动态配置刷新的我们要配置一个@RefreshScope 在类上才可以实现对象属性的的动
- maven配置项目的jdk版本无效排查最近在配置项目的jdk的时候发现在pom.xml中配置的1.8版本无效,maven更新后就变成了1.7
- 1.企业实际项目中Git的使用在实际的企业项目开发中,我们一般Java的项目在公司都有自己的局域网代码仓库,仓库上存放着很多的项目。以我工作
- Jsch是什么?JSch 是SSH2的一个纯Java实现。它允许你连接到一个sshd 服务器,使用端口转发,X11转发,文件传输等等。你可以
- 本文实例讲述了C#自定义缓存封装类。分享给大家供大家参考。具体如下:这个自定义的C#类封装了部分常用的缓存操作,包括写入缓存,读取缓存,设置
- net 原则上禁止跨线程访问控件,因为这样可能造成错误的发生,推荐的解决方法是采用代理,用代理方法来间接操作不是同一线程创建的控件。第二种方
- 什么是AOPAOP(Aspect-OrientedProgramming,面向方面编程),可以说是OOP(Object-Oriented P
- 本文介绍了JAVA中实现原生的 socket 通信机制原理,分享给大家,具体如下:当前环境jdk == 1.8知识点socket 的连接处理
- 中国科学院开源协会镜像站地址:IPV4/IPV6: http://mirrors.opencas.cn 端口:80IPV4/IPV6: ht
- 介绍主要使用了goole的zxing包,下面给出了示例代码,很方便大家的理解和学习,代码都属于初步框架,功能有了,需要根据实际使用情况完善优
- 今天我们来编写一个缩放效果的ImageView ,网上有很多人都讲了这些。但有许多人都直接使用了库文件,那么我们今天做的是直接上代码编写一个
- 1、检测权限因为dump系统lsass内存和sam注册表需要管理员权限,所以首先需要对当前进程上下文权限做判断。public static
- 1. LongAdder和AtomicLong类似的使用方式,但是性能比AtomicLong更好。LongAdder与AtomicLong都
- 本文实例讲述了Android编程实现图片放大缩小功能ZoomControls控件用法。分享给大家供大家参考,具体如下:MainActivit
- 1.泛型概念泛型就是将类型参数化所谓类型参数化就是将类型定义成参数的形式,然后在使用此类型的时候的时候再传入具体的类型到这我们可以看出来:泛
- 原因分析使用ajax从前台页面传输数据到后台controller控制器的时候,出现中文乱码其实乱码问题出现的原因,就是由于默认的tomcat
- 最近在做一个多语言切换的功能,类似于微信的语言切换,搜了下资料基本上都是以下这种:1. 实现的效果 和微信类似,在设置界面打开切换
- Map简介将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。此接口取代 Dictionary 类,后者完全是一个抽象
- 在WinForm程序中,实现TextBox文本输入框占位符的方式也很多,最常用的是方式基于Windows Api SendMessage函数
- 问题起因主要是使用mybatis作为ORM之后,返回的对象为Map,然后对于数据库的datetime,datestamp类型返回为时间戳而不