java IO之字节字符流

本文详细介绍了Java中的IO流概念,包括字节流和字符流的基本使用方法,如FileOutputStream、FileInputStream、FileWriter、FileReader等类的实例化及主要方法的调用,并对比了字节流与字符流之间的区别。
摘要由CSDN通过智能技术生成

字节输出流:OutputStream

public abstract class OutputStream

extends Object

implements Closeable,Flushable

构造:

public FileOutputStream(File file)throws FileNotFoundException                                                新建数据

public FileOutputStream(File file,boolean append)throws FileNotFoundException                     追加数据

输出:

public abstract void write(int b)throws IOException                                                                      输出单个字节数据

public void write(byte b[ ])throws IOException                                                                              输出一组字节数据

public void write(byte b[ ],int off,int len)throws IOException                                                          输出部分字节数据

写入数据:

public class OutputStreamDemo {
	public static void main(String[] args) throws Exception {
		File file = new File("d:" + File.separator + "demo.txt"); // 要操作的文件
		OutputStream out = null; // 声明字节输出流
		out = new FileOutputStream(file); // 通过子类实例化
		String str = "hello world"; // 要输出的信息
		byte b[] = str.getBytes(); // 将String变为byte数组
		out.write(b); // 写入数据
	}

}
追加数据:

public class AppendOutputStreamDemo {
	public static void main(String[] args) throws Exception {
		File file = new File("d:" + File.separator + "demo.txt"); // 要操作的文件
		OutputStream out = null; // 声明字节输出流
		out = new FileOutputStream(file, true); // 通过子类实例化,表示追加
		String str = "hello world \r\n"; // 要输出的信息,“\r\n”表示换行
		byte b[] = str.getBytes(); // 将String变为byte数组
		out.write(b); // 写入数据
		out.close(); // 关闭
	}

}


字节输入流:InputStream

public abstract class InputStream

extends Object

implements Closeable,Flushable

读取:

public abstract int  read()throws IOException                                                       读取单个字节,当读取结束时返回-1

public  int  read(byte[ ] b)throws IOException                                                       读取多个字节数据(具体详见百度)

public  int  read(byte[ ] b,int off,int len)throws IOException                                   读取指定字节数据

读取所有数据

public class InputStreamDemo01 {
	public static void main(String[] args) throws Exception {
		File file = new File("d:" + File.separator + "demo.txt"); // 要操作的文件
		InputStream input = null; // 字节输入流
		input = new FileInputStream(file);// 通过子类进行实例化操作
		byte b[] = new byte[1024];// 开辟空间接收读取的内容
		int len = input.read(b); // 将内容读入到byte数组中
		System.out.println(new String(b, 0, len)); // 输出内容
		input.close(); // 关闭
	}

}

字符输出流:Writer

public abstract class Writer

extends Object

implements Closeable,Flushable,Appendable

方法:

public abstract void close() throws IOException                          关闭输出流

public void write(String str) throws IOException                           将String字符串输出

public void write(char[ ] str)  throws IOException                           将字符数组输出

public abstract void flush() throws IOException                             强制性清空缓存

示例:

public class WriterDemo {
	public static void main(String[] args) throws Exception {
		File file = new File("d:" + File.separator + "demo.txt"); // 要操作的文件
		Writer out = null; // 声明字符输出流
		out = new FileWriter(file); // 通过子类实例化
		String str = "hello world"; // 要输出的信息
		out.write(str); // 写入数据
		out.flush(); // 刷新
	}

}
字符输入流:Reader

public abstract class Reader

extends Object

implements Closeable,Readable

方法:

public abstract void close() throws IOException                           关闭输出流

public int read() throws IOException                                              读取单个字符

public int read(char[ ] str)  throws IOException                              将内容读取到字符数组,返回读入的长度

示例:

public class ReaderDemo01 {
	public static void main(String[] args) throws Exception {
		File file = new File("d:" + File.separator + "demo.txt"); // 要操作的文件
		Reader input = null; // 字符输入流
		input = new FileReader(file);// 通过子类进行实例化操作
		char b[] = new char[1024];// 开辟空间接收读取的内容
		int len = input.read(b); // 将内容读入到byte数组中
		System.out.println(new String(b, 0, len)); // 输出内容
		input.close(); // 关闭
	}

}


字节流和字符流的区别

1)字节流没有使用缓冲区,而字符流使用到了。

2)字节流可以处理各种数据,但在处理中文时用字符流更好。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值