java 自动换行 io_java中的IO操作总结

所谓IO,也就是Input与Output的缩写。在java中,IO涉及的范围比较大,这里主要讨论针对文件内容的读写

其他知识点将放置后续章节(我想,文章太长了,谁都没耐心翻到最后)

对于文件内容的操作主要分为两大类

分别是:

字符流

字节流

其中,字符流有两个抽象类:Writer   Reader

其对应子类FileWriter和FileReader可实现文件的读写操作

BufferedWriter和BufferedReader能够提供缓冲区功能,用以提高效率

同样,字节流也有两个抽象类:InputStream   OutputStream

其对应子类有FileInputStream和FileOutputStream实现文件读写

BufferedInputStream和BufferedOutputStream提供缓冲区功能

俺当初学IO的时候犯了不少迷糊,网上有些代码也无法通过编译,甚至风格都很大不同,所以新手请注意:

1.本文代码较长,不该省略的都没省略,主要是因为作为一个新手需要养成良好的代码编写习惯

2.本文在linux下编译,类似于File.pathSeparator和File.separator这种表示方法是出于跨平台性和健壮性考虑

3.代码中有些操作有多种执行方式,我采用了方式1...方式2...的表述,只需轻轻解开注释便可编译

4.代码中并没有在主方法上抛出异常,而是分别捕捉,造成代码过长,如果仅是测试,或者不想有好的编程习惯,那你就随便抛吧……

5.功能类似的地方就没有重复写注释了,如果新手看不懂下面的代码,那肯定是上面的没有理解清楚

字符流

实例1:字符流的写入

编译之后,在目录下面生成文件,并写入字符串

90018853d25428a52918830013887022.png

实例2:字符流的读取

编译之后的效果:

ad144e5f7095f4e55d78cd4c08997787.png

实例3:文本文件的复制

编译之后,产生life目录下的lrc.txt文件,复制成功

8e6455fe1720d29639e08666d5f176b5.png

实例4:利用字符流的缓冲区来进行文本文件的复制

字节流

实例5:字节流的写入

编译之后产生的文件,以上在字符串中加\r\n就是为了便于终端显示

其实在linux下面换行仅用\n即可

796ffd8f05382742b0971a1acef2aea7.png

实例6:字节流的读取

读取文件到终端

2b75e706302e1a7713f935f0496245f5.png

实例7:二进制文件的复制

复制效果,如图:

c517a23ffcf0d6e67f85487d6ec7cd79.png

实例8:利用字节流的缓冲区进行二进制文件的复制

两个目录都有 “一个人生活.mp3”文件,顺便说一下,这歌挺好听的

28e7a7d4d26abad97e74bb89e0c50934.png

初学者在学会使用字符流和字节流之后未免会产生疑问:什么时候该使用字符流,什么时候又该使用字节流呢?

其实仔细想想就应该知道,所谓字符流,肯定是用于操作类似文本文件或者带有字符文件的场合比较多

而字节流则是操作那些无法直接获取文本信息的二进制文件,比如图片,mp3,视频文件等

说白了在硬盘上都是以字节存储的,只不过字符流在操作文本上面更方便一点而已

此外,为什么要利用缓冲区呢?

我们知道,像迅雷等下载软件都有个缓存的功能,硬盘本身也有缓冲区

试想一下,如果一有数据,不论大小就开始读写,势必会给硬盘造成很大负担,它会感觉很不爽

人不也一样,一顿饭不让你一次吃完,每分钟喂一勺,你怎么想?

因此,采用缓冲区能够在读写大文件的时候有效提高效率

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值