Java中IO流

目录

一、在Java中IO流分类

二、字节流FileOutputStream写出数据

三、字节流FileInputStream读入数据

四、字节缓冲输出流BufferedOutputStream

五、字节缓冲输入流BufferedInputStream

六、字符流OutputStreamWriter写出数据:

七、字符流InputStreamReader读入数据:

七、字符缓冲输出流BufferedWriter:

八、字符缓冲输入流BufferedReader:


一、在Java中IO流分类

 按数据类型分
            字节流(字节输入流和字节输出流)
            字符流(字符输入流和字符输出流)

按流向分(站在Java程序的角度分,对Java语言来说,往文件里写内容,就相当于写出数据)
            输入流(读入数据)
            输出流(写出数据)

二、字节流FileOutputStream写出数据

package com.hezhiying;

import java.io.FileOutputStream;

public class Main {

	public static void main(String[] args) throws Exception {
		FileOutputStream fos = new FileOutputStream("E:\\a.txt");//创建字节输出流对象
		fos.write("hello".getBytes());//调用write()方法
		fos.close();//释放资源
	}
}

运行结果:

三、字节流FileInputStream读入数据

package com.hezhiying;

import java.io.FileInputStream;

public class Main {

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

		FileInputStream fis1 = new FileInputStream("E:\\a.txt");// 创建字节输入流对象

		// 用单字节进行读取
		int x = 0;
		while ((x = fis1.read()) != -1) {
			System.out.print((char) x);
		}
		fis1.close();// 释放资源

		FileInputStream fis2 = new FileInputStream("E:\\a.txt");// 创建字节输入流对象
		// 用字节数组进行读取
		byte[] b = new byte[1024];
		int len = 0;
		while ((len = fis2.read(b)) != -1) {
			System.out.print(new String(b, 0, len));
		}
		fis2.close();// 释放资源
	}
}

运行结果:

其中第二种方法理论上是第一种的1024倍,当然了达不到

在Java中,还有一个高效字节流,这个方法比上面那个要快很多

四、字节缓冲输出流BufferedOutputStream

package com.hezhiying;

import java.io.BufferedOutputStream;
import java.io.FileOutputStream;

public class Main {

	public static void main(String[] args) throws Exception {
		BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("E:\\a.txt"));

		bos.write("hello".getBytes());// 调用write()方法
		bos.close();// 释放资源s
	}
}

运行结果:

五、字节缓冲输入流BufferedInputStream

package com.hezhiying;

import java.io.BufferedInputStream;
import java.io.FileInputStream;

public class Main {

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

		BufferedInputStream bis1 = new BufferedInputStream(new FileInputStream("E:\\a.txt"));
		// 用单字节进行读取
		int x = 0;
		while ((x = bis1.read()) != -1) {
			System.out.print((char) x);
		}
		bis1.close();// 释放资源

		BufferedInputStream bis2 = new BufferedInputStream(new FileInputStream("E:\\a.txt"));
		// 用字节数组进行读取
		byte[] b = new byte[1024];
		int len = 0;
		while ((len = bis2.read(b)) != -1) {
			System.out.print(new String(b, 0, len));
		}
		bis2.close();// 释放资源
	}
}

运行结果:

六、字符流OutputStreamWriter写出数据:

字符流=字节流+编码表,ASCII,UTF-8,GBK等都是编码表,字符流跟字节流很相像,下面只讲解字符流特有的功能

代码:

package com.hezhiying;

import java.io.FileOutputStream;
import java.io.OutputStreamWriter;

public class Main {

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

		OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("a.txt"));
		
		//这是写单个字符
		osw.write('a');
		

		//这是写一个字符数组
		char[] chs1 = {'a','b','c'};
		osw.write(chs1);
		
		//这是写一个字符数组的一部分
		char[] chs2 = {'a','b','c','d'};
		osw.write(chs2,1,2);
		
		//这是写一个字符串
		osw.write("hello");
		
		//这是写一个字符串的一部分
		osw.write("hello",1,2);
		
		osw.flush();
		osw.close();
		
	}
}

运行结果:

七、字符流InputStreamReader读入数据:

代码:

package com.hezhiying;

import java.io.FileInputStream;

import java.io.InputStreamReader;

public class Main {

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

		InputStreamReader isr = new InputStreamReader(new FileInputStream("a.txt"));

		// 这是一次读取一个字符
		int ch = 0;
		while ((ch = isr.read()) != -1) {
			System.out.println((char) ch);
		}

		InputStreamReader isr1 = new InputStreamReader(new FileInputStream("a.txt"));
		// 这是一次读取一个字符数组
		char[] chs = new char[1024];
		int len = 0;
		while ((len = isr1.read(chs)) != -1) {
			System.out.print(new String(chs,0,len));
		}
		isr1.close();
		isr.close();
	}
}

运行结果:

七、字符缓冲输出流BufferedWriter:

代码:

package com.hezhiying;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

public class Main {

	public static void main(String[] args) throws IOException {
		BufferedWriter bw = new BufferedWriter(new FileWriter("a.txt"));
		
		bw.write("hello");
		bw.flush();
		bw.close();
		
	}
}

运行结果:

八、字符缓冲输入流BufferedReader:

代码:

package com.hezhiying;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class Main {

	public static void main(String[] args) throws IOException {
		// 创建字符缓冲输入流
		BufferedReader br = new BufferedReader(new FileReader("a.txt"));

		// 这是一次读取一个字符
		int ch = 0;
		while ((ch = br.read()) != -1) {
			System.out.println((char) ch);
		}
		
		BufferedReader br1 = new BufferedReader(new FileReader("a.txt"));
		char[] chs = new char[1024];
		int len=0;
		while((len=br1.read(chs))!=-1) {
			System.out.println(new String(chs,0,len));
		}
		br1.close();
		br.close();
	}
}

运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贺志营

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值