026Java文件数据IO操作

文件数据IO操作

1.Reader和Writer操作

1.1字符流原理

Reader:是所有字符输入流的父类

Writer:是所有的字符输出流父类

字符流是以字符(char)为单位记性读取数据,一次读取一个Unicode

字符流的底层也是字节流

1.2常用方法

Reader常用方法:

int read():指读取流中的一个字符,返回值int型字符“低16位有效”,

int read(char[] chs):读取流中长度为length个字节,并存入到该字符数组中,返回值为实际读取到的字节数组

Writer常用方法

void writer(int c):写出一个字符,“低16位有效”

void writer(char[] chs):

void writer(String str):

void writer(char[] chs,int offset,int len):

2.转换流:可以设定字符集

2.1字符转换流原理

InputStreamReader:字符输出流,可以设定字符集,从流中可以按照该编码格式将字节数据转换为字符读取

OutputStreamWriter:字符输出流,可以设定字符集,并将字符按照相应的编码方式转换为相应字节然后写出

2.2使用OSW

代码如下:

/**
	 * 按照指定编码写出字符串,编码名称忽略大小写
	 * @throws IOException 
	 */
	@Test
	public void testOSW() throws IOException{
		FileOutputStream fos=new FileOutputStream("osw.txt");
		OutputStreamWriter osw=new OutputStreamWriter(fos,"GBK");
		osw.write("Mr 范");
		osw.close();
	}

2.3使用ISR

  代码如下

/**
	 * 按照指定编码读取字符串
	 * @throws IOException 
	 */
	@Test
	public void testISR() throws IOException{
		FileInputStream fis=new FileInputStream("osw.txt");
		//按照指定的编码格式读取字符串,编码名称忽略大小写
		InputStreamReader isr=new InputStreamReader(fis,"GBK");
		int chs=-1;
		while((chs=isr.read())!=-1){
			System.out.print((char)chs);
		}
		//System.out.println("读取完毕");
		isr.close();
	}
3.PrintWriter

3.1创建PW对象

PrintWriter是带有自动行刷新的缓冲字符输出流

代码如下:

/**
	 * 测试缓冲字符输出流
	 * @throws FileNotFoundException 
	 */
	@Test
	public void testPrintWriter() throws FileNotFoundException{
		PrintWriter pw=new PrintWriter("pw.txt");
		pw.println("大家好");
		pw.println("Hello!");
		pw.println("bye!");
		pw.close();
	}
4.BufferedReader

4.1缓冲字符输入流,内部提供了缓冲区,提高了读取效率

代码如下:

@Test
	public void testBuffered() throws IOException{
		FileInputStream fis=new FileInputStream("pw.txt");
		InputStreamReader isr=new InputStreamReader(fis);
		BufferedReader br=new BufferedReader(isr);
		String str=null;
		while((str=br.readLine())!=null){
			System.out.println(str);
		}
		br.close();
	}




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值