java学习笔记IO之字节输入输出流

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/467106.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

firefox 和 ie 事件处理的细节,研究,再研究-----书写同时兼容ie和ff的事件处理代码...

在ie中,事件对象是作为一个全局变量来保存和维护的。 所有的浏览器事件,不管是用户触发 的,还是其他事件, 都会更新window.event 对象。 所以在代码中,只要轻松调用 window.event 就可以轻松获取 事件对象, 再 event.s…

不知道的,还以为是555牌香烟

你认为历史上最成功的芯片是什么?就是出货很多很多那种。Intel的酷睿系列?NO!AMD?错!别猜了,原来是它!这就是电工的神器——555定时器,从诞生到现在,销量过百亿&#xff…

异形卵

【问题描述】 我们探索宇宙是想了解浩瀚星空的奥秘,我们却很少意识到宇宙深处藏匿的危险,他们无时无刻不紧盯着我们的地球。如果外星人拜访我们,结果可能与哥伦布当年踏足美洲大陆不会有什么两样,这是历史,也是现实。…

C语言书籍推荐

C语言书籍推荐 宗旨:技术的学习是有限的,分享的精神是无限的。 一、基础 1、《C语言入门很简单》 《零起点学通C语言(多媒体范例教学)》 《C语言从入门到精通》 2、《C程序设计语言 第2版新版》 《C程序设计语言(第2版…

SQLServer技巧

-2.批量更新: UPDATE p_ProductTab SET PC4p.pc4 from (select productid030301102000,pc4423523 union all select productid030301102001,pc4sdgser) as pWHERE p_ProductTab.productidp.productid -1.保留2位小数 Convert(decimal(18,2),字段) 长度为18位&…

Linux操作寄存器前为什么要ioremap

1. 原因这里只考虑有 MMU 的芯片,Linux 为了实现进程虚拟地址空间,在启用 MMU 后,在内核中操作的都是虚拟地址,内核访问不到物理地址。如果在驱动里直接访问物理地址,等于访问了一个非法地址,会导致内核崩溃…

Loading页的实现代码

用了几种Loading页的代码,还是算这个好用了。真的佩服牛人们的思想。有的说用DIV来实现遮盖后面的东西,当FORM加载完后,执行CLOSE()d的JS函数。我试验了几次,效果不是那么好。也主要是由于我吧东西都放在我本地,感觉不…

Fibonacci数列

问题描述Fibonacci数列的递推公式为:FnFn-1Fn-2,其中F1F21。 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。 输入格式输入包含一个整数n。输出格式输出一行,包含一个整数,表…

C语言——关键字

C语言——关键字 宗旨:技术的学习是有限的,分享的精神是无限的。 【谨记:尽量不要用printf函数,要去看变量的值,内存的值。】 auto,int,double,long,char,fl…

调色板栅格数据使用GDAL时注意

这几天用GDAL处理DRG数据时发现,有数据被处理成了黑板,什么都没有,发现是因为DRG图像颜色比较简单,使用了调色板的缘故。 使用SetColorTable将调色板写入后,一部分基本正常,但还有些图像还是有黑板的现象。…

jQuery实现表格行上移下移和置顶

<!DOCTYPE HTML> <html> <head> <meta charset"utf-8"> <meta name"viewport" content"widthdevice-width, initial-scale1, maximum-scale1"> <title>jQuery实现表格行上移下移和置顶</title> <m…

做算法,为什么建议你一定要学懂C++?

在工业界&#xff0c;有这样一个规律&#xff1a;“ 但凡能用其他语言的都不会用C&#xff0c;只能用C的必然用C。”但是&#xff0c;C的学习和项目开发都比较困难。一个有经验的老手也经常搞出野指针&#xff0c;内存泄露等bug&#xff0c;包括我自己在学C的时候也非常痛苦。所…

顺序查找法

#include<stdio.h> #define KeyType int #define OtherType int #define List_size 100 typedef struct{KeyType key;OtherType other; }RecordType; typedef struct{RecordType r[List_size];int length; }Recordlist; int SeqSearch(Recordlist l,int k)//没有设置监视…

IT行业专业术语

IT行业专业术语 宗旨&#xff1a;技术的学习是有限的&#xff0c;分享的精神是无限的。 目前比较流行的开发语言有哪些&#xff1f; Java、C#(C Sharp)、C、C、JavaScript、PHP、Ruby、Python等 WEB端有哪些开发技术&#xff1f; Javascript、CSS、HTML、Ajax、Flex等 比较…

AI一键注释代码、阅读整个项目、转换编程语言。已开源!

获取github源码地址和国内url、key方式&#xff1a;在文章底部 大家好今天给大家介绍一款开源项目&#xff0c;这个项目是由渡码维护的&#xff0c;这个项目支持自己的大模型和使用openai两种方式&#xff0c;本文章介绍使用openai的方式&#xff01; 使用过程中发现两个问题…

为什么别人赚钱比自己容易?

之前的文章提到自己的一个同事&#xff0c;在一家公司干了10年&#xff0c;最近跳槽找了份5万薪水的工作&#xff0c;大家都很想听他的故事。为了方便记录&#xff0c;我叫他文哥文哥比我们一般的毕业生厉害&#xff0c;他比我大将近9岁&#xff0c;我在初中的时候他已经是一个…

Linux下遍历目录下的文件

方法1&#xff1a;http://tag.csdn.net/Article/ef431d9b-68b3-419f-9f85-1fb9279f904a.html//ListFile.cpp#include <stdio.h>#include <dirent.h>#include <sys/types.h>intmain(intargc, char*argv[]){ if (2 ! argc){ printf("Usage:ListFileSource…

折半查找

折半查找又为二分查找&#xff0c;对待查找的列表有两个要求&#xff1a;1.必须采用顺序存储结构。 2.必须按关键字大小顺序排列。 #include<stdio.h> #define Max 100 typedef struct {int key;int other; }RecordType; typedef struct {RecordType r[Max];int lenght; …

15张图来了解【树】,面试再也不怕被刷了

我之前的文章C语言实现树&#xff0c;你一定看得懂树的概念什么是树&#xff1f;树属于非线性数据结构的一种&#xff0c;概念也极多&#xff0c;是由结点或顶点和边组成的且不存在着任何环的一种数据结构。没有结点的树称为空树。一棵非空的树包括一个根结点&#xff0c;还很可…

String源码图

String StringBuffer StringBuilder 均为对字符数组的操作。 实现了不同的接口&#xff0c;导致不同的覆写。 实现了同样的接口&#xff0c;适应不同的场景。 转载于:https://www.cnblogs.com/zhengwenqiang/p/8076495.html