I/O中read及write各个方法区别

java I/O中,流式部分分为:Reader,Writer,InputStream,OutputStream和File。

具体内容,这里就不赘述,对I/O存在疑惑的朋友去该网址学习,很好的归纳了I/O: JAVA I/O介绍

本文主要介绍其中read方法和write方法的区别

read方法包括:

1. read(),此方法一个字节一个字节的读取

如以下代码,每次输出的都是读到的字节内容

package test;

import java.io.File;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class Readtxt {

	public static void main(String[] args) {
		File file=new File("E:\\pic\\zz.txt");
		File file1=new File("E:\\pic\\zz1.txt");
		int count=0;
		try{
		FileInputStream input=new FileInputStream(file);
		FileOutputStream output=new FileOutputStream(file1);
		int len=-1;
//		byte[] buffer=new byte[10];
		while((len=input.read())!=-1){
			System.out.println(len);
			output.write(len);

		}
		input.close();
		output.close();
		}catch(IOException e){
			e.printStackTrace();
		}


	}

}

这里输出的len都是读取实际内容,结果如下

72
101
108
108
111
44
109
121
32
110
97
109
101
32
105
115
32
122
101
110
103
122
104
101
110
13
10
13
10
105
39
109
32
50
51
32
121
101
97
114
115
32
111
108
100
46


2. read(buffer),此方法按buffer进行读取,如果文件总共读取的byte长度是46,buffer长度为10,则读取4次,每次读取10个字节,最后一次读取6个字节。

这里len输出的每次读取的buffer长度,最后一次是6

package test;

import java.io.File;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class Readtxt {

	public static void main(String[] args) {
		File file=new File("E:\\pic\\zz.txt");
		File file1=new File("E:\\pic\\zz1.txt");
		int count=0;
		try{
		FileInputStream input=new FileInputStream(file);
		FileOutputStream output=new FileOutputStream(file1);
		int len=-1;
		byte[] buffer=new byte[10];
		while((len=input.read(buffer))!=-1){
			System.out.println(len);
			output.write(buffer);

		}
		input.close();
		output.close();
		}catch(IOException e){
			e.printStackTrace();
		}


	}

}


输出结果如下

10
10
10
10
6



3. read(buffer,0,len) 则按照len长度进行读取,例如len长度为5,则读取9次,每次读取5个字节,最后一次读取1个字节。

和第二种方法基本相同,不同的是按照len长度进行读取

package test;

import java.io.File;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class Readtxt {

	public static void main(String[] args) {
		File file=new File("E:\\pic\\zz.txt");
		File file1=new File("E:\\pic\\zz1.txt");
		int count=0;
		try{
		FileInputStream input=new FileInputStream(file);
		FileOutputStream output=new FileOutputStream(file1);
		int len=-1;
		byte[] buffer=new byte[10];
		while((len=input.read(buffer,0,5))!=-1){
			System.out.println(len);
			output.write(buffer,0,5);

		}
		input.close();
		output.close();
		}catch(IOException e){
			e.printStackTrace();
		}


	}

}

输出结果

5
5
5
5
5
5
5
5
5
1


write方法包括:(参照read方法):

1. write()

2. write(buffer) 在这里,和read方法不同的是,如果byte长度是46,则输出5次,每次读取10个字节,最后一次只有6个字节,却多出了4个字节,而采用第三种方法就可以避免你多余输出,占了内存。

3. write(buffer,0,len)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值