IO字节输入输出流

OutputStream:字节输出流

  该抽象类是所有字节输出流的超类;

  定义了一些共性的成员方法:

    1.写入一个字节

void write(int b);//b表示字节

    2.写入字节数组

void write(byte[]  b);//写入一个字节数组

    3.写入字节数组的一部分

void write(byte[] b,int off, int len);//off 表示起始索引,len表示写几个

    4.刷新输出流,并强制写出所有缓冲的输出字节

void flush();

    5.关闭输出流并释放与之有关的所有系统资源

void close();

FileOutputStream :文件字节输出流 extends OutputStream

  作用:

    把内存中的字节数据,写入到文件中保存

  构造方法:

    1.创建一个指向File对象表示的文件中写入数据的文件输出流

 

FileOutputStream(File  file);

    2.创建一个指定名称的文件中写入数据的输出文件流

FileOutputStream(String  name);//通俗说就是个文件路径名

  构造方法的作用(也就是他干什么事)

    1.会根据构造方法的参数,创建一个文件,如果没有设置追加写的值,文件已经存在的话,就会覆盖

    2.创建一个FileOutputStream对象

    3.将这个对象指向目的地

  IO读写的过程:

java程序--->JVM--->OS(操作系统)--->调用方法进行读写文件

  FileOutputStream的使用步骤:

    

1.创建对象,在构造方法中绑定写入数据的目的地
2.调用对象中的方法write,把数据写入到文件中
3.释放资源

  注意:

    字节流操作的是字节,所以会直接把字节写入到文件中;

    字符流操作的是字符,先会将字符写到内存的缓冲区中,进行转换,转换为字节,再使用底层的字节流将数据写入到文件中

  字符输出流使用实例1

1 FileOutputStream  fos= new FileOutputStream("a.txt");//a.txt相对路径,相对项目目录下
2 fos.write(97);//写入一个字节
3 fos.close();//关闭流并释放资源

  使用实例2:

FileOutputStream fos= new FileOutputStream(new File('a.txt'));//构造方法中传递一个File文件对象
byte[]  b="你好".getBytes();//使用String类方法将字符串转换成字节数组
fos.write(b);//写入一个字节数组
fos.close();//关闭资源

  追加写与换行

    1.追加写:boolean  append 参数追加写开关,true是追加,false是不追加,默认是false

    

FileOutputStream(File file, boolean  append);
FileOutputStream(String pathname,boolean append);

    2.换行

    win系统:\r\n

    linux:/n

    mac:\r

    可以使用System类的静态方法动态获取换行符

  

System.getProperty("line.separator");

InputStream:字节输入流,该抽象类是所有字节输入流的超类

  共性的成员方法:

    1.读取一个字节并返回,没有字节返回-1

int  read();

    2.读取一定量的字节数,并存储到字节数组中,返回读取到的字节数

int  read(byte[]  b);

    3.关闭输入流并释放与之有关的所有系统资源

void close();

FileInputStream:文件字节输入流 java.lang.FileInputStream  extends  InputStream

  作用:将文件中的数据,以字节的形式读取到内存中

  构造方法:

    

FileInputStream(File  file);//数据源使用File对象
FileInputStream(String  pathname);//数据源是一个文件路径

  构造方法的作用:

    1.创建一个字节输入流的对象

    2.会将这个对象指向构造方法中要读取的数据源

  FileInputStream使用步骤:

1.创建对象,绑定构造方法中的数据源
2.调用字节输入流的方法read,来读取文件
3.释放资源

  FileInputStream读取单字节实例:

1 //创建对象,绑定源文件
2 FileInputStream  fis= new FileInputStream("a.txt");//a.txt是存在的
3 //读取单字节。
4 int len=0;
5 while((len=fis.read())!=-1){
6   System.out.println((char)len);//这里的输出就只能是单字节字符,不能是中文,因为一个中文2个字节,读一个字节就输出会乱码;
7 }
8 //关闭流资源
9 fis.close();

  FileInputStream读取字节数组实例:

  

//创建输入流对象
FileInputStream  fis=new FileInputStream(new File("a.txt"));
//创建要接收字节的数组
byte[]  b= new byte[1024];//这里一般是1024或者其整数倍
int  len =0;//这里的len是每次读取的有效个数while((len= fis.read(b))!=-1){System.out.println(new String(b,0,len));//这里使用String类的构造方法,b是字节数组,0是开始索引,len是个数
}
/*
注意:
1.字节数组的作用:起到缓冲的作用,一次读取多个字节存在数组中,提高效率,这个字节数组的长度一般定义为1024或者是1024的倍数
2返回值int是什么:每次读取的有效字节个数
*/

  

转载于:https://www.cnblogs.com/xuzhaocai/p/8068436.html

java学习笔记IO之字节输入输出流相关推荐

  1. 【java学习笔记-io流 文件读写和键盘读写】带缓存的输入/输出流和数据输入/输出流

    文章目录 字节流类 带缓存的输入/输出流 BufferedReader与BufferedWriter类 下面的例子程序演示了read()方法,从控制台读取字符直到用户键入"q": ...

  2. Java学习 第三章 Steam输入输出流

    Java 流(Stream).文件(File)和IO Java.io 包几乎包含了所有操作输入.输出需要的类.所有这些流类代表了输入源和输出目标. Java.io 包中的流支持很多种格式,比如:基本类 ...

  3. 1.6 Java字节流的使用:字节输入/输出流、文件输入/输出流、字节数组输入/输出流

    InputStream 是 Java 所有字节输入流类的父类, OutputStream 是 Java 所有字节输出流类的父类, 它们都是一个抽象类,因此继承它们的子类要重新定义父类中的抽象方法. 下 ...

  4. Java学习笔记---IO操作

    一.文件的创建 ------------------------------------------------------- File类,表示磁盘上的文件或目录,可对文件或目录进行操作.    * ...

  5. Java学习笔记-IO

    IO IO流概述 可以将数据传输操作,看作一种数据的流动,按照流动的方向分为输入(Input)和输出(Output) java中的IO操作主要指的是java.io包下的一些常用类的使用,通过这些常用类 ...

  6. JAVA学习笔记—IO流

    I/O 框架 流的概念 内存与存储设备之间传输数据的通道 水(相当于数据)-> 传输水的管道(相当于流)-> 脸盆(相当于内存) 生活用水 -> 流入 家庭废水 -> 流出 流 ...

  7. 小陈java学习笔记IO

    文件拷贝 重点: 1.文件在读取的时候,就写到输出流的对象里,达到一边读一边写的效果 2.使用write()的时候,一定要规范使用方法,否则可能会输出无效 节点流和处理流 1.节点流可以从一个特定的数 ...

  8. java用输入流创建数据文件_java开发知识IO知识之输入输出流以及文件

    java开发知识IO知识之输入输出流以及文件 一丶流概述 流十一组有序的数据序列.根据操作的类型,可以分为输入流跟输出流两种. IO(input/output)输入/输出流提供了一条通道程序.可以使用 ...

  9. java字符流输出流_JAVA语言之IO流字符串输入输出流

    本文主要向大家介绍了JAVA语言之IO流字符串输入输出流,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 概述 StringReader 字符输入流 和CharArrayReader类 ...

最新文章

  1. 数据结构实验——中缀表达式转为后缀表达式
  2. Word中“节”的作用
  3. CNN目标检测(二):YOLO
  4. Linux学习一天一个命令(2)[cd命令]
  5. java 队列实例_Java 实例 - 队列(Queue)用法
  6. 电脑键盘练习_用键盘打字怎样才能练得快,有什么窍门没?
  7. 理解为什么要使用Ioc
  8. 关于unicode,mbcs,utf8,charset,encoding等相关概念的说明
  9. 互联通对接阿里云专线开通手册
  10. 主动学习、纯半监督学习与直推学习
  11. 四,AXI总线协议解析
  12. python 局域网传文件_Python+pyftpdlib实现局域网文件互传代码示例
  13. Android手机玩8086汇编
  14. UNIX/Linux的传奇历史
  15. 国内网通、电信代理服务器地址
  16. 「模拟8.19 A嚎叫..(set) B主仆..(DFS) C征程..(DP+堆优化)」
  17. java计算机毕业设计网课系统源码+系统+数据库+lw文档+mybatis+运行部署
  18. Ubuntu安装ClickHouse
  19. 光流传感器不是一个到手就能用的PIX外设
  20. 大学英语四六级作文模板

热门文章

  1. 1)C++对象大小计算
  2. 关于selectNodes与selectSingleNode的用法的区别
  3. 开源GIS系统关系图
  4. 百万记录级MySQL数据库及Discuz!论坛优化
  5. 纯html5+css3能写出什么惊人效果?
  6. 一起学并发编程 - 优雅关闭
  7. Petuum - Careers
  8. SQLServer 维护脚本分享(08)临时数据库(tempdb)
  9. js两个小技巧【看到了就记录一下】
  10. 搭建Spring MVC 4开发环境八步走