Java文件操作基础

   在了解文件操作之前我想说一个基本常识:一般读写文件需要两次数据复制,比如说读文件,需要先从硬盘复制到操作系统内核,再从内核复制到应用程序分配的内存中。还需要知道操作系统所在的环境是内核态,应用程序时用户态。应用程序调用操作系统的功能,需要两次环境的切换,先从用户态切换到内核态,再从内核态切换回用户态。这种切换是有开销的,我们应该尽量减少这种切换。

   从前面所讲我们引出一个新的概念,那就是缓冲区,在读文件时,尽管可能一次读的比较少,但是会读一块,放到缓冲区,下次读取就会直接从缓冲区读取,减少访问操作系统和硬盘。

  还需要讲的是打开和关闭文件,在我们打开一个文件之后,操作系统内核会创建一个有关该文件的内存结构,这个结构是耗内存的,操作系统能够同时打开的文件也是有限的,在不用文件的时候应该关闭。这就是平时我们在打开了一个流之后,应该关闭的原因。

   还有一个流的概念,我们都知道有输入流和输出流,输入流就是可以从中获取数据,可以是键盘,文件,网络等,输出流就是可以从中写入数据,一般有显示终端,网络,文件等。

   前面讲了一些基础知识,我们接下来说一些具体的类和其用法。

二进制文件和字节流

InputStream/OutputStream:基类,他里面提供了一些基础的文件操作方法,具体可以看API。

FileInputStream/FileOutputStream:s输入源和输出目标是文件的流。

ByteArrayInputStream/ByteArrayOutputStream: 输入源和输出目标是字节数组的流。

DataInputStream/DataOutputStream:按基本类型和字符串而非只是字节读写流。

BufferedInputStream/BufferedOutputStream: 对输入输出流提供缓冲功能。

文本文件和字符流:

Reader/Writer:字符流的基类。

InputStreanReader/OutputStreamWriter:将字节流转换为字符流。

FileReader/FileWriter:输入源和输出目标是文件的字符流。

CharArrayReader/CharArrayWriter:输入输出目标是char数组的字符流。

StringReader/StringWriter:输入输出是String的字符流。

BufferedReader/BufferedWriter:对输入输出提供缓冲,以及按行读写的功能。

PrintWriter:可以将基本类型转换为字符串的输出形式。

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值