Java初学总结(二十一)

常用的字符输入与字符输出流类

1.字符输出流顶级类:Writer
public abstract class Writer—不能new

1.1 FileWriter — 方便写字符文件
(1)构造方法
在这里插入图片描述

package com.wangxing.test1;
import java.io.File;
import java.io.FileWriter;
import java.io.Writer;
public class TestWriter1 {
	public static void main(String[] args)throws Exception {
		//FileWriter(File file) 给一个File对象构造一个FileWriter对象。 
		String  path="F:"+File.separator+"test"+File.separator+"msg.txt";
		File file1=new File(path);
		FileWriter	out1=new FileWriter(file1);
		Writer	out11=new FileWriter(file1);
		//FileWriter(File file, boolean append) 给一个File对象构造一个是否允许追加FileWriter对象。 
		FileWriter	out2=new FileWriter(file1,true);
		Writer	out22=new FileWriter(file1,true);
		//FileWriter(String fileName) 给一个String对象构造一个FileWriter对象。
		FileWriter	out3=new FileWriter(path);
		Writer	out33=new FileWriter(path);
		//FileWriter(String fileName, boolean append)  给一个String对象构造一个是否允许追加FileWriter对象。
		FileWriter	out4=new FileWriter(path,true);
		Writer	out44=new FileWriter(path,true);
	}
}

(2)实例方法
在这里插入图片描述

package com.wangxing.test1;

import java.io.File;
import java.io.FileWriter;
import java.io.Writer;

public class TestWriter2 {

	public static void main(String[] args)throws Exception {
		//创建字符输出流对象
		String  path="F:"+File.separator+"test"+File.separator+"msg.txt";
		File file1=new File(path);
		FileWriter	out1=new FileWriter(file1);
		//准备需要写出的数据
		String info="hello,world";
		/*
		//void	write(char[] cbuf) 写入一个字符数组。 
		char cbuf[]=info.toCharArray();
		out1.write(cbuf);
		*/
		
		/*
		//void	write(char[] cbuf, int off, int len) 写入字符数组的一部分。 
		char cbuf[]=info.toCharArray();
		out1.write(cbuf,6,5);
		*/
		
		/*
		//void	write(int c) 写一个字符 
		char cbuf[]=info.toCharArray();
		for(char c:cbuf) {
			out1.write(c);
		}
		*/
		
		/*
		//void	write(String str) 写一个字符串 
		out1.write(info);
		*/
		
		//void	write(String str, int off, int len) 写一个字符串的一部分。
		out1.write(info,6,5);
		
		out1.flush();
		out1.close();
	}
}

1.2 BufferedWriter:将文本写入字符输出流,缓冲字符。
(1)构造方法
在这里插入图片描述

package com.wangxing.test2;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
public class TestBufferedWriter1 {
	public static void main(String[] args)throws Exception {
		//BufferedWriter(Writer out) 创建使用默认大小的输出缓冲区的缓冲字符输出流。 
		String  path="F:"+File.separator+"test"+File.separator+"msg.txt";
		File  file=new File(path);
		FileWriter  out=new FileWriter(file); //底层字符输出流
		BufferedWriter  bout1=new BufferedWriter(out);//高级字符输出流
		//BufferedWriter(Writer out, int sz) 创建一个新的缓冲字符输出流,使用给定大小的输出缓冲区。 
		BufferedWriter  bout2=new BufferedWriter(out,100);//高级字符输出流
	}
}

(2)实例方法
在这里插入图片描述

package com.wangxing.test2;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
public class TestBufferedWriter2 {
	public static void main(String[] args)throws Exception {
		//创建字符输出流对象
		String  path="F:"+File.separator+"test"+File.separator+"msg.txt";
		File  file=new File(path);
		FileWriter  out=new FileWriter(file); //底层字符输出流
		BufferedWriter  bout1=new BufferedWriter(out);//高级字符输出流
		//准备输出的数据
		String  info1="hello,world";
		String  info2="hello,world";
		/*
		//void	write(char[] cbuf, int off, int len) 写入字符数组的一部分。 
		char  array[]=info.toCharArray();
		bout1.write(array, 0, 5);
		*/
		/*
		//void	write(int c) 写一个字符 
		char  array[]=info.toCharArray();
		for(char c:array) {
			bout1.write(c);
		}
		*/
		/*
		//void	write(String s, int off, int len) 写一个字符串的一部分。 
		bout1.write(info, 0, info.length());
		*/
		
		bout1.write(info1, 0, info1.length());
		//void	newLine() 写一行行分隔符。 
		bout1.newLine();
		bout1.write(info2, 0, info2.length());
		bout1.flush();
		bout1.close();
		out.close();
	}
}

1.3 OutputStreamWriter:将字节输出流转换成字符输出流
(1)构造方法
OutputStreamWriter(OutputStream out) 将字节输出流转换成字符输出流
(2)实例方法
在这里插入图片描述

package com.wangxing.test3;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
public class TestOutputStreamWriter {
	public static void main(String[] args)throws Exception {
		String info="hello,world";
		String  path="F:"+File.separator+"test"+File.separator+"msg.txt";
        FileOutputStream  out=new FileOutputStream(path);
        //我们是可以通过FileOutputStream这个字节输出流将数据保存到文件中,
        //但是需要将被保存的文件转换成字节数组才可以。
        //如果我们不想将将被保存的文件转换成字节数组写出,这时我们可以通过OutputStreamWriter,
        //将字节输出流转换成字符输出流,直接写出String数据
        OutputStreamWriter  owtiter=new OutputStreamWriter(out);
        owtiter.write(info);
        owtiter.flush();
        owtiter.close();
        out.close();
	}
}

2.字符输入流顶级类:Reader

public abstract class Reader—不能new

2.1 FileReader:读取字符文件的
(1)构造方法
在这里插入图片描述

package com.wangxing.test1;
import java.io.File;
import java.io.FileReader;
import java.io.Reader;

public class TestFileReader1 {

	public static void main(String[] args)throws Exception {
		//FileReader(File file) 创建一个新的 FileReader ,给出 File读取。 
		String  path="F:"+File.separator+"test"+File.separator+"msg.txt";
		File file1=new File(path);
		FileReader  in1=new FileReader(file1);
		Reader  in11=new FileReader(file1);
		//FileReader(String fileName)创建一个新的 FileReader ,给定要读取的文件的名称。 
		FileReader  in2=new FileReader(path);
		Reader  in22=new FileReader(path);
	}
}

(2)实例方法
在这里插入图片描述

package com.wangxing.test1;
import java.io.File;
import java.io.FileReader;
import java.io.Reader;
public class TestFileReader2 {
	public static void main(String[] args)throws Exception {
		//创建输入流对象
		String  path="F:"+File.separator+"test"+File.separator+"msg.txt";
		File file1=new File(path);
		FileReader  in1=new FileReader(file1);
		/*
		//int	read(char[] cbuf) 将字符读入数组。 返回总字符数,如果到达文件末尾返回-1
		char cbuf[]=new char[(int)file1.length()];
		int len=in1.read(cbuf);
		System.out.println("len=="+len);
		in1.close();
		String info=new String(cbuf,0,len);
		System.out.println(info);
		*/
		
		//int	read() 读一个字符 
		char cbuf[]=new char[(int)file1.length()];
		//保存每一次读取的字符数据
		int  data=0;
		//定义数据访问下标
		int len=0;
		while((data=in1.read())!=-1) {
			cbuf[len]=(char)data;
			len++;
		}
		in1.close();
		String info=new String(cbuf,0,len);
		System.out.println(info);
	}
}

2.2 public class BufferedReader:从字符输入流读取文本
(1)构造方法
在这里插入图片描述

package com.wangxing.test2;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
public class TestBufferedReader1 {
	public static void main(String[] args)throws Exception {
		//BufferedReader(Reader in) 创建使用默认大小的输入缓冲区的缓冲字符输入流。 
		String  path="F:"+File.separator+"test"+File.separator+"msg.txt";
		File  file=new File(path);
		FileReader in=new FileReader(file);
		BufferedReader  bin1=new BufferedReader(in);
		//BufferedReader(Reader in, int sz) 创建使用指定大小的输入缓冲区的缓冲字符输入流。 
		BufferedReader  bin2=new BufferedReader(in,100);
	}
}

(2)实例方法
在这里插入图片描述

package com.wangxing.test2;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
public class TestBufferedReader2 {
	public static void main(String[] args)throws Exception {
		String  path="F:"+File.separator+"test"+File.separator+"msg.txt";
		File  file=new File(path);
		FileReader in=new FileReader(file);
		BufferedReader  bin1=new BufferedReader(in);
		//String	readLine() 读一行文字。 
		//定义保存每一行数据的字符串变量
		String line=null;
		while((line=bin1.readLine())!=null) {
			System.out.println(line);
		}
		bin1.close();
		in.close();
	}
}

使用BufferedReader的readLine方法来代替Scanner类的nextLine方法从控制台读取数据

package com.wangxing.test2;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class TestBufferedReader3 {
	public static void main(String[] args)throws Exception {
		BufferedReader  bin1=new BufferedReader(new InputStreamReader(System.in));
	    System.out.println("请输入姓名:");
	    String name=bin1.readLine();
	    System.out.println("你输入的姓名是==="+name);
	}
}

2.3 InputStreamReader:将字节输入流转换成字符输入流
(1)构造方法
InputStreamReader(InputStream in) 将字节输入流转换成字符输入流
(2)实例方法
在这里插入图片描述

package com.wangxing.test3;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
public class TestInputStreamReader {
	public static void main(String[] args)throws Exception {
		String  path="F:"+File.separator+"test"+File.separator+"msg.txt";
		FileInputStream  in=new FileInputStream(path);
		InputStreamReader  ireader=new InputStreamReader(in);
		BufferedReader bin=new BufferedReader(ireader);
		String line=null;
		while((line=bin.readLine())!=null) {
			System.out.println(line);
		}
		bin.close();
		ireader.close();
		in.close();
	}
}

3.输入输出流的操作步骤

1.创建文件对象【File对象】,指定输入输出的位置
2.创建输入输出流对象
1.文本选字符流,其他的选字节
2.读取选输入,保存选输出
3.调用read()/write()方法
4.关闭流

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值