FileInputStream(String filePath);//文件的完整路径

FileInputStream(File fileObj);//文件的File对象

这两个构造器都会抛出FileNotFoundException异常。

FileOutputStream继承于OutputStream,该对象可以将字节写入文件。

构造函数:

FileOutputStream(String filePath)

FileOutputStream(String filePath,booleanappend)

FileOutputStream(File fileObj)

FileOutputStream(File fileObj,boolean append)

和FileInputStream一样,不同的是有一个append参数,这个参数如果为true,则以追加的方式打开文件,否则,这个方法会删除同名的已有文件创建一个新的输出流。另外,如果试图打开只读文件会抛出异常。

3、字节缓冲流

对于面向字节的流,缓冲流通过将内存缓冲区附加到IO系统来扩展过滤流。这种流允许java一次对多个字节执行多次IO操作,从而提升性能。

因为可以使用缓冲区,所以略过、标记、或重置流都是可能发生的,BufferedInputStream类、BufferedOutputStream类、PushbackInputStream类都实现了缓冲流。

BufferedInputStream类

缓冲IO是很常见的性能优化手段,BufferedInputStream类允许将任何InputStream对象封装到缓冲流中以提高性能,因为带缓冲区的输入流从流中读入字符时,不会每次都对设备访问。

构造函数:

BufferedInputStream(InputStream inputStream)

BufferedInputStream(InputStream inputStream,int bufSize)

缓冲输入流除了任何InputStream都实现了的read()和skip()方法外,还支持mark()和reset()方法。

BufferedOutputStream类

创建一个带缓冲区的输出流,带缓冲区的输出流在收集要写出的字符时,不会每次都对设备访问,当缓冲区填满或者当流被冲刷时,数据就被写出,因此调用flush()方法才是数据刷盘。

构造函数:

BufferedOutputStream(OutputStream outputStream)

BufferedOutputStream(OutputStream outputStream,int bufSize)

PushbackInputStream类

一个可以预览字节的输入流,它读取字节,但并不破坏他们,读取后可以再将他们回推到输入流中,下次调用read()时可以再次被读取。

构造函数:

PushbackInputStream(InputStream inputStream)

PushbackInputStream(InputStream inputStream,int num)

第一个构造函数创建的流对象允许将一个字节回推到输入流。

第二个构造函数创建的流对象具有一个长度为num的回推缓冲区,从而允许将多个字节回推到输入流中。

4、打印流

PrintStream类

用的最多的System.out.println()就是PrintStream类里的方法。

PrintStream最初的目的是为了以可视化格式打印所有的基本数据类型以及String对象,它的最重要的两个方法:print()和println()可以打印出各种类型,如果参数不是基本类型,那么会自动调用对象的toString()方法并显示结果。

五、字符流

1、顶级抽象类

Reader字符流的顶级抽象类,定义了java字符流的输入模型。

方法列表:

方法

描述

int read()

读取一个字符,返回表示该字符的证书,如果达到文件末尾,则返回-1

int read(char buff[])

读取buff.length个字符,返回成功读取的字符数,如果达到文件末尾,则返回-1

int read(CharBuffer buff)

读取字符,返回成功读取的字符数,如果达到文件末尾,则返回-1

int read(char buff[],int offset,int num)

从buff[offset]开始读,读取num个字符,如果文件达到末尾,则返回-1

long skip(long num)

跳过num个字符,返回实际跳过的字符数

void close()

关闭输入流,如果试图继续读取,会产生IO异常

boolean ready()

如果下一个输入请求不等待,就返回true,否则返回false

boolean markSupported()

如果这个流支持mark或者reset,就返回true

void mark(int num)

在当前流的位置放置标记,该标记在reset()之前一直有效

void reset()

将输入指针重新设置为前面设置的标记位置

Writer字符流的顶级抽象类,定义了java字符流的输出模型。

方法列表:

方法

描述

Writer append(char cn)

将cn追加到调用输出流的末尾,返回对调用流的引用

Writer append(CharSequence chars)

将chars追加到调用输出流的末尾,返回对调用流的引用

Writer append(CharSequence chars,int begin,int end)

将chars从begin到end-1之间的字符追加到输出流的末尾,返回对调用流的引用

void close()

关闭输出流,如果试图继续向其中写入内容,将产生IO异常

void flush()

完成输出状态,从而清空所有缓冲区,即刷新输出缓冲区

void write(int ch)

写入一个字符到输出流中

void write(char buff[])

将整个字符数组写入输出流中

void write(char buff[],int offset,int num)

将buff数组中从buff[offset]开始的num个字符写入输出流中

void write(String str)

将str写到输出流中

void write(String str,int offset,int num)

将字符串str中从offset开始写,写num个字符

2、文件流

FileReader类

FileReader类可以创建用于读取文件内容的Reader对象。

注意:FileReader 用于读取字符流。要读取原始字节流,请考虑使用 FileInputStream。

构造函数:

FileReader(String filePath)

FileReader(File fileObj)

FileWriter类

FileWriter类可以创建能够用于写入文件的Writer对象。

文件是否可用或是否可以被创建取决于底层平台。特别是某些平台一次只允许一个 FileWriter(或其他文件写入对象)打开文件进行写入。在这种情况下,如果所涉及的文件已经打开,则此类中的构造方法将失败。

FileWriter用于写入字符流。要写入原始字节流,请考虑使用FileOutputStream。

构造函数:

FileWriter(String filePath)

FileWriter(String filePath,booleanappend)

FileWriter(File fileObj)

FileWriter(File fileObj,boolean append)

append参数代表是否追加到文件末尾。

3、缓冲流

BufferedReader类

BufferedReader类通过缓冲输入提高性能,该类具有两个构造函数:

BufferedReader(Reader inputStream)

BufferedReader(Reader inputStream,int bufSize)

第二个构造函数指定创建bufSize大小的缓冲字符流。

与面向字节的流一样,缓冲的输入字符流也实现了mark()和reset()方法,并且markSupported()会返回true.

BufferedWriter类

BufferedWriter是缓冲输出的Writer,使用BufferedWriter可以通过减少实际向输出设备物理的写入数据的次数来提高性能。

构造函数:

BufferedWriter(Writer outputStream)

BufferedWriter(Writer outputStream,int bufSize)

第一种形式创建的缓冲流使用具有默认大小的缓冲区,在第二种形式中缓冲区的大小是由bufSize指定的。

4、打印流

PrintWriter类

PrintWriter本质上是PrintStream的面向字符的版本。

构造函数:

PrintWriter(OutputStream outputStream)

PrintWriter(OutputStream outputStream,booleanautoFlushingOn)

PrintWriter(Writer outputStream)

PrintWriter(Writer outputStream,boolean autoFlushingOn)

autoFlushingOn参数控制每次调用println()/printf()或format()方法时,是否自动刷新输出缓冲区,如果为true,就自动刷新,否则不自动刷新,没有指定的构造函数不自动刷新。

PrintWriter(File outputFile)

PrintWriter(File outputFile,String charSet)

PrintWriter(String outputFileName)

PrintWriter(String outputFileName,String charSet)

这几个构造函数允许从File对象或根据文件路径创建PrintWriter对象,对于每种形式,都会自动创建文件,所有之前存在的同名文件都会被销毁。一旦创建PrintWriter对象,就将所有输出定向到指定文件,可以通过charSet传递的名称来指定字符编码。

java i o教程_Java I/O系统相关推荐

  1. java基础自学教程_Java基础自学教程(全套)

    Java基础自学教程(全套)视频简介: Java是计算机领域中一种非常重要的程序设计语言,也是一款优秀的纯面向对象语言.第一视频教程分享的这部Java基础自学教程是一部非常不错的教程.它详细讲述了JA ...

  2. java界面编辑教程_java程序设计基础教程第六章图形用户界面编辑.docx

    java程序设计基础教程第六章图形用户界面编辑.docx 还剩 27页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保! 内容要 ...

  3. java面向对象的教程_java面向对象入门教程

    java面向对象入门教程 Java 编程语言的风格十分接近C.C++语言.Java是一个纯的面向对象的程序设计语言,以下是小编为大家搜索整理的java面向对象入门教程,希望能给大家带来帮助!更多精彩内 ...

  4. web java获取当前时间_Java 获取当前系统时间的三种方法

    准备工作: import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; 方式一: /** ...

  5. java编译器使用教程_Java编译器API简介

    今天给大家分享的是Java编译器API简介,文章部分内容摘自[优锐课]学习笔记. Java编译器API Java编译器API是Java模块(称为java.compiler)的一部分.该模块包括语言模型 ...

  6. java 对称加密 教程_Java 对称加密算法DES 的使用教程

    前面一篇我写了对称加密算法IDEA的使用教程<Java 对称加密算法IDEA 的使用教程>.今天我们来学习另外一个对称加密算法DES.DES算法使用相对广泛一些,一些老的项目中可能会遇到. ...

  7. java制作菜单教程_Java菜单和工具栏学习教程

    Java菜单和工具栏学习教程 引导语:工具栏是显示位图式按钮行的控制条,位图式按钮用来执行命令.以下是百分网小编分享给大家的Java菜单和工具栏学习教程,欢迎阅读! 1.1 菜单和工具栏 菜单和工具栏 ...

  8. java io流大全_Java IO流系统整理

    Java IO流的分类 Java中的流,可以从不同的角度进行分类. 按流向分类: 输入流: 程序可以从中读取数据的流. 输出流: 程序能向其中写入数据的流. 按数据传输单位分类: 字节流:以字节(8位 ...

  9. java 微商城开发_Java网上商城系统可以开微信商城吗

    开微信商城是现在非常火的一件事,我们身边有很多人都在开微信商城.而开发微信商城吗?MCmore小麦来为你解惑. Java网购商城系统和微信商城 网上商城系统是由很多种类型的,如java网上购物系统,p ...

最新文章

  1. python线下培训-线下培训价值一万八的某达PYTHON培训视频
  2. dama数据管理知识体系指南_DAMA知识体系解读(6)数据操作管理
  3. Skipping failed optional dependency /chokidar/fsevents
  4. 好久没敲代码了(强行补上今天的博客。。。)
  5. 清浊音判别 matlab,matlab语音信号处理如何判别清浊音?
  6. 法拉第未来宣布汉福德工厂获得最终生产使用资质
  7. itextpdf 实现html转pdf中中文及图片base64的解决方法
  8. qt使用QProcess实现进程通信
  9. cad怎样弄出放线的坐标_利用CAD绘制全站仪放线用的坐标点
  10. OpenWRT(四)AP、STA、中继模式
  11. html ul做成表格,HTML+CSS入门 ul打造表格样式解析
  12. js获取时分秒数据格式为YYYMMDDHHmm方法
  13. 协议软件服务器吗,使用开源协议软件搭建即时通讯服务器.doc
  14. 3.1 人生规划的秘密:一个人活成一支队伍
  15. 无法支持计算机上的硬件,电脑经常弹出“不支持的硬件”怎么办?
  16. 重装系统(win7)
  17. 你了解设计公司的服务内容有哪些吗?
  18. Html主要内容总结
  19. fan4801开关电源原理图_FAN41501
  20. 公司建站网站用哪咱自助建站系统好一些。

热门文章

  1. 133_Power BI 报表服务器2020年1月版本更新亮点
  2. java根据pdf模版动态生成pdf
  3. coreldraw x8段落_CorelDRAW X8中文版从入门到精通
  4. linux建立ftp suse_suse开通ftp的实例
  5. simulink将值传递给mask封装下的模块
  6. 用MATLAB玩转机器人-第1章 认识MATLAB
  7. Python编辑工具的全新版本,PyCharm 2020.1 稳定版发布
  8. Python 正则表达式re模块的使用
  9. Sobel两种算子形式
  10. leetcode 3 字符串