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回忆录—输入输出流详细讲解(入门经典)

今天我们开始进入学习 java 中比较让人头疼的事, 那就是 I/O 流、多线程、网络编程。这里对 I/O 流的一个详细讲解。希望对大家有点用吧。(不看后悔哦)一、什么是IOJava中I/O操作主要...
  • qq_22063697
  • qq_22063697
  • 2016年08月07日 02:39
  • 8448

JAVA IO 输入流 输出流笔记(一)

IO负责数据的传递,也是最容易形成瓶颈的一环,使用IO的情况有很多,大致分为以下几部分:          ·字节操作(InputStream、OutputStream)          ·字符...
  • simon_steve_sun
  • simon_steve_sun
  • 2012年12月21日 12:25
  • 8667

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

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

java学习笔记-输入输出流

输入输出流体系结构 分类 字节输入 字节输出 字符输入 字符输出 基类 InputStream OutputStream Read Write 访问文件 ...
  • wxpokay
  • wxpokay
  • 2016年03月04日 13:17
  • 129

Java输入输出流体系

Java输入输出流体系中常用的流分类
  • qq_28168421
  • qq_28168421
  • 2016年12月02日 09:45
  • 166

java中常见的输入输出流案例学习(一)

字节输入流: 1.FileInputStream 用途:从文件系统中的文件获得输入字节,常用于读取图像、声音等原始字节流,读取字符流可考虑使用FileReader 详细构造函数与常用方法可参考API文...
  • u012453619
  • u012453619
  • 2014年08月18日 00:16
  • 4348

Java输入输出流总结

题目:把字符串"1,+,2,+,3,+,4,+,5,-,6,-,7,+,8,-,9"写入D盘,并且计算字符串的值,在控制台打印。 import java.io.File; import java.io...
  • tonehao1990
  • tonehao1990
  • 2015年06月08日 22:09
  • 652

JAVA-输入输出流相关的一些操作及用法详解

输入/输出(Input/Output)是指对某个设备或环境进行数据的输入或输出.任何语言都有输入输出的功能,在Java程序中,是通过流来完成输入和输出的,它通过Java输入输出系统连接到物理设备,虽然...
  • Jason763
  • Jason763
  • 2016年11月13日 11:33
  • 768

字节输入输出流之实现图片文件的复制

/* * 通过字节输入输出流实现图片文件的复制 * */package io;import java.io.FileInputStream; import java.io.FileNotFou...
  • qq_35622606
  • qq_35622606
  • 2017年08月30日 01:22
  • 236

输入输出流简单理解

输入流、输出流到底应该如何理解呢? 输入流:从中读取数据 输出流:从中写入数据 我们应该从内存的角度来进行分析,比如:内存到硬盘,只能讲内存中的数据输出到硬盘中,(数据从内存到硬盘)这就是输出流...
  • qq_32519097
  • qq_32519097
  • 2016年10月06日 19:23
  • 635
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java输入输出流笔记
举报原因:
原因补充:

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