Java输入输出流笔记

原创 2016年06月01日 11:40:48

1.IO流

1.1、输入输出相对于程序运行内存而言。从内存到硬盘是输出,从硬盘到程序是输入


1.2、输入流的基类包括InputStream和Reader,输出流的基类包括OutputStream和Writer。字节流包括InputStream、OutputStream;字符流包括Reader和Writer。字节是机器能读懂的二进制码1010、字符是经过解码的汉字字母等。


1.3、IO流的入门级实现类:InputStream---->FileInputStreamOutputStream---->FileOutputStream

       Reader---->FileReader Writer---->FileWriter

     stream结尾的是字节流,Reader/Writer结尾的事字符流


1.4、输入流的常用方法:

1.4.1    int read():从输入流去处单个字节,读取的字节数据转换成int型(ANSII值)返回;   

                       ---->对应的 字符流中的方法    int read()

1.4.2    int read(byte[ ] b):从输入流中一次性读取b.length个字节,并存储在数组b中,返回读取的字节数;      

                       ---->对应的 字符流中的方法    int read(char[ ] b)

 读取结束的标志是read(byte[ ] b)/read(char[ ] b)返回-1

1.4.3    int read(byte[ ] b,int off,int len):从输入流中读取len长度的字节,存放入数组b中,存放的起始位置是offf所指向的下标

      ---->对应的 字符流中的方法    int read(char[ ] b,int  off,int len)


1.5、输出流的常用方法:

1.5.1以字符为单位的操作

1.5.1.1    void write(int c):将指定的字节/字符c输出到输出流

1.5.1.2    void write(byte[ ]/char[ ] buf):将直接/字符数组中的数据输出到输出流

1.5.1.3    void write(byte[ ]/char[ ] buf,int off,int len):将字节/字符数组从数组的off位置开始,输出长度为len的字节/字符输出到输出流

1.5.2以字符串为单位的操作   

1.5.2.1     void write(String str):将str字符串里包含的字符输出到指定的输出流、

1.5.2.2     void write(String str,int off, int len):将str字符串里从off位置开始,长度为len的字符输出到指定输出流

1.6.输入输出IO流的例子:

public void class IOTest{

public static void main(String[] args) throw IOException{

FileInputStream fis = new FileInputStream("test.txt");   //用实现类创建一个输入流fis并指向要读取的文件

FileOutputStream fos = new FileOutputStream("newTest.txt"); //用实现类创建一个输出流fis并指向要输出到的文件

byte[ ] buf = new byte[1024];//定义一个长度为1024字节数组用作缓冲数组

int hasRead = 0;

while((hasRead = fis.read(buf)) !=-1 ){

fos.write(buf,0,hasRead);

fis.close();

fos.close(); 

}

}

2.缓冲流

    2.1.1缓冲字节流

         IO包提供BufferedInputStream和BufferedOutputStream两个流作为缓冲流,这两个流内部都定义一个8192的字节数组,当调用read()或write()方法读写数据时,首先将数据写入定义好的字节数组中,然后将字节数组的数据一次性写到文件中。作用类似于1.6中的数组buf。‘他们在构造方法中接收InpuStreamt和OutputStream两个类型的参数作为被包装对象,在读写数据时提供缓冲功能。

    2.1.2例子

public class Example{

//用FileInputStream实现类创建一个字节输入流,并将其作为参数传入缓冲输入流BufferedInputStream中

BufferedInputStream bis = new BufferedInputStream(new FileInputStream("src.txt"));

//同样方式创建一个带缓冲的输出流

BufferedOutputStream bos  = new BufferedOutputStream(new FileOutputStream);

while((len = bis.read()) != -1){

bos.write(len);

}

bis.close();

bos.close();

}

2.2.1缓冲字符流

字符流同样提供带缓冲的包装流,分别是BufferedReader和BufferedWriter.在BufferedReader中有一个重要的方法readLine(),该方法用于一次读取一行文本,返回String类型

2.2.2例子

public class Example{

public static void main(String[ ] args) throws Exception{

//用FileReader实现类创建一个输入字符流,并将其作为参数传入缓冲字符流中

BufferedReader br= new BufferedReader(FileReader(src.txt));

BufferedWriter bw = new BufferedWriter(FileWriter("des.txt"));

String str = null;

while((str = br.readLine())!=null){

bw.write(str);

bw.newLine();写入一个换行符

}

br.close();

bw.close();

}

}


3. IO转换流

输入输出流提两个转换流用于实现字节流转换成字符流:InputStreamReader用于将输入字节流转换成输入字符流;OutputStreamWriter用于将字节输出流转换成字符输出流。下面以获取键盘输入为例来介绍转换流的用法:

Java使用System.in代表标注输入,即键盘输入,但这个标准输入时InputStream类的实例,使用不太方便,而且键盘输入的内容都是文本内容,所以可以使用InputStreamReader将其转换成字符流;普通的Reader读取输入内容时效率较低,可以讲普通的Reader包装成BufferedReader,利用其readLine()方法一次读取一行内容。

例:

public class Example{

public static void main(String[ ] args) throw IOException {

//System.in是字节流,将其转换成字符流对象

InputStreamReader reader = new InputStreamReader(System.in);

//将字符流Reader封装成带缓存的字符流

BufferedReader brread = new BufferedReader(reader);

String str = null;

while((str = brread.readLine())!=null){

if(str.equals("exit"))

{

System.exit(1);

}

System.out.printlin("输入的内容为:"+str);

}

}

}



版权声明:本文为博主原创文章,未经博主允许不得转载。

Java基础-IO-字节输入输出流(笔记)

抽象类(abstract)  字节输入输出流 InputStream  实现的子类 ---- FileInputStream              子类 ---- FilterInput...

Java TCP/IP学习笔记之输入输出流

输入输出流     Java中 TCP套接字的基本输入输出形式是流(stream)抽象。流只是一个简单有序的字节序列。Java 的输入流(input streams)支持读取字节,而输出流(outp...

Java基础-IO-字符输入输出流(笔记)

抽象类(abstract) 字符输入输出流   Reader          实现的子类                      子类   ---- InputStreamReader(转换流...

java IO输入输出流笔记

1、原理与概念 一、概念 流:流动 、流向 从一端移动到另一端  源头与目的地 程序 与  文件|数组|网络连接|数据库  ,以程序为中心 二、IO流分类 1、流向: 输入流与输出流 ...

Java IO输入输出流 笔记

String s = "慕课ABC"; byte[] bytes1 = s.getBytes();//转换成字节序列用的是项目默认的编码 ,编码GBK for(byte b : bytes1)...

JAVA输入输出流学习笔记

输入流(Input Stream):程序从输入流读取数据 输入流(Output Stream):程序向输出流写入数据 数据流分类: 1.字节流:数据流中最小的数据单元是字节 2.字符流:数据流中最小的...
  • ABBY258
  • ABBY258
  • 2017年01月10日 18:48
  • 64

IO输入输出流学习笔记(第一篇)(JAVA)

一、流的分类 1.输入流与输出流:按方向来分。我们说的方向是站在程序的角度(内存)。 2.字节流与字符流:按操作的数据单元来分,字节流操作8位的字节,字符流操作16位的字符。字节流主要是Input...

java文件输入输出流学习笔记

1.字节输入输出流:
  • tan313
  • tan313
  • 2014年11月06日 20:00
  • 1056

Java精选笔记_其他IO流(ObjectInputStream、DataInputStream、PrintStream、标准输入输出流)

其他IO流 ObjectInputStream和ObjectOutputStream 如果希望永久将对象转为字节数据写入到硬盘上,即对象序列化,可以使用ObjectOutputStream(对象输...

Java学习笔记之输入输出流(二) 缓冲流、随机流、数组流、数据流、对象流

以下是博主学java的时候记的一些笔记,分享给大家,如果有错误或者以为的话,可以在下方留言 缓冲流(读一行) BufferedReader类和BufferedWriter类...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java输入输出流笔记
举报原因:
原因补充:

(最多只允许输入30个字)