java中的输入输出流3

java中的输入输出流3

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

     1.字符输出流---顶级类Writer

       public abstract class Writer---不能new

  1. 1FileWriter  --- 方便写字符文件

        构造方法

FileWriter(File file) 给一个File对象构造一个FileWriter对象。

FileWriter(File file, boolean append) 给一个File对象构造一个是否允许追加FileWriter对象。

FileWriter(String fileName) 给一个String对象构造一个FileWriter对象。

FileWriter(String fileName, boolean append)  给一个String对象构造一个是否允许追加FileWriter对象。

package com.wangxing.writerdemo1;

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

public class FileWriterDemo1 {

	public static void main(String[] args)throws Exception {
		//字符输出流----Writer[抽象类]
		//FileWriter 构造方法
		//FileWriter(File file) 给一个File对象构造一个FileWriter对象。 
		//File file--File类型的输出路径
		File file1=new File("f:"+File.separator+"20201201"+File.separator+"test1.txt");
		FileWriter out1=new FileWriter(file1);
		Writer out11=new FileWriter(file1);
		//FileWriter(String fileName) 给一个String对象构造一个FileWriter对象。
		//String fileName--String类型的输出路径
		String  path2="f:"+File.separator+"20201201"+File.separator+"test2.txt";
		FileWriter out2=new FileWriter(path2);
		Writer out22=new FileWriter(path2);
		//FileWriter(File file, boolean append) 给一个File对象构造一个是否允许追加 
        //FileWriter对象。 
		File file3=new File("f:"+File.separator+"20201201"+File.separator+"test3.txt");
		FileWriter out3=new FileWriter(file3,true);
		Writer out33=new FileWriter(file3,false);
		//FileWriter(String fileName, boolean append)  给一个String对象构造一个是否允许追加 
        //FileWriter对象。
		String  path4="f:"+File.separator+"20201201"+File.separator+"test4.txt";
		FileWriter out4=new FileWriter(path4,true);
		Writer out44=new FileWriter(path4,false);
	}

}

     实例方法

void

write(char[] cbuf) 写入一个字符数组。

void

write(char[] cbuf, int off, int len) 写入字符数组的一部分。

void

write(int c) 写一个字符

void

write(String str) 写一个字符串

void

write(String str, int off, int len) 写一个字符串的一部分。

void

close() 关闭流,先刷新。

void

flush() 刷新流。

package com.wangxing.writerdemo1;

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

public class FileWriterDemo2 {

	public static void main(String[] args)throws Exception {
		//字符输出流----Writer[抽象类]
		//FileWriter 实例方法
		/*
		//void	write(char[] cbuf) 写入一个字符数组。 
		File file1=new File("f:"+File.separator+"20201201"+File.separator+"test1.txt");
		FileWriter out1=new FileWriter(file1,true);
		String info="hello,world"; //需要写出的数据
		char  chararray[]=info.toCharArray();
		out1.write(chararray);
		out1.flush();
		out1.close();
		*/
		/*
		//void	write(int c) 写一个字符 
		File file1=new File("f:"+File.separator+"20201201"+File.separator+"test2.txt");
		FileWriter out1=new FileWriter(file1,true);
		String info="hello,world"; //需要写出的数据
		char  chararray[]=info.toCharArray();
		for(char  ch:chararray){
			out1.write(ch);
		}
		out1.flush();
		out1.close();
		*/
		
		/*
		//void	write(String str) 写一个字符串 
		File file1=new File("f:"+File.separator+"20201201"+File.separator+"test3.txt");
		FileWriter out1=new FileWriter(file1,true);
		String info="hello,world"; //需要写出的数据
		out1.write(info);
		out1.flush();
		out1.close();
		*/
		
		//void	write(String str, int off, int len) 写一个字符串的一部分。 
		File file1=new File("f:"+File.separator+"20201201"+File.separator+"test4.txt");
		FileWriter out1=new FileWriter(file1,true);
		String info="hello,world"; //需要写出的数据
		out1.write(info,5,6);
		out1.flush();
		out1.close();
	}

}

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

       public abstract class Reader---不能new

     2.1 FileReader---字符文件的

       构造方法

FileReader(File file) 创建一个新的 FileReader ,给出 File读取。

FileReader(String fileName)创建一个新的 FileReader ,给定要读取的文件的名称。

package com.wangxing.readeremo1;

import java.io.File;
import java.io.FileReader;
import java.io.Reader;

public class FileReaderDemo1 {

	public static void main(String[] args)throws Exception{
		//字符输入流---Reader[抽象类]
		//FileReader  构造方法
		//FileReader(File file) 创建一个新的 FileReader ,给出 File读取。 
		//File file---File类型的输入路径
		File  file1=new File("f:"+File.separator+"20201201"+File.separator+"text1.txt");
		FileReader  in1=new FileReader(file1);
		Reader  in11=new FileReader(file1);
		//FileReader(String fileName)创建一个新的 FileReader ,给定要读取的文件的名称。 
		//String fileName---String类型的输入路径
		String  path1="f:"+File.separator+"20201201"+File.separator+"text1.txt";
		FileReader  in2=new FileReader(path1);
	    Reader  in22=new FileReader(path1);
	}

}

       实例方法

int

read() 读一个字符。返回值是读取的真实字符数据的整数值,如果已经达到流的末尾,则为-1。

int

read(char[] cbuf) 将字符读入数组。返回总字符数,如果到达文件末尾返回-1

void

close() 关闭流并释放与之相关联的任何系统资源。

package com.wangxing.readeremo1;

import java.io.File;
import java.io.FileReader;
import java.io.Reader;

public class FileReaderDemo2 {

	public static void main(String[] args)throws Exception{
		//字符输入流---Reader[抽象类]
		//FileReader  实例方法
		/*
		//int	read(char[] cbuf) 将字符读入数组。返回总字符数,如果到达文件末尾返回-1
		File  file1=new File("f:"+File.separator+"20201201"+File.separator+"test1.txt");
		FileReader  in1=new FileReader(file1);
		char  chararray[]=new char[(int)file1.length()];
		int len=in1.read(chararray);
		in1.close();
		String info=new String(chararray,0,len);
		System.out.println(info);
		*/
		
		//int	read() 读一个字符。返回值是读取的真实字符数据的整数值,如果已经达到流的末尾,则 
        //为-1。
		File  file1=new File("f:"+File.separator+"20201201"+File.separator+"test1.txt");
		FileReader  in1=new FileReader(file1);
		char  chararray[]=new char[(int)file1.length()];  //保存读取来的数据
		int len=0; //保存读取的每一个具体字符数据的整数值
		int index=0;//字符数组下标
		while((len=in1.read())!=-1){
			chararray[index]=(char)len;
			index++;
		}
		in1.close();
		String info=new String(chararray);
		System.out.println(info);
		
		//void	close() 关闭流并释放与之相关联的任何系统资源。 
	}

}

     1.2 public class BufferedWriter---将文本写入字符输出流,缓冲字符,以提供单个字符,数组和字符串的高效写入。

          构造方法

BufferedWriter(Writer out) 创建使用默认大小的输出缓冲区的缓冲字符输出流。

BufferedWriter(Writer out, int sz) 创建一个新的缓冲字符输出流,使用给定大小的输出缓冲区。

package com.wangxing.writerdemo2;

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

public class BufferedWriterDemo1 {

	public static void main(String[] args) throws Exception{
		//BufferedWriter  构造方法
		//BufferedWriter(Writer out) 创建使用默认大小的输出缓冲区的缓冲字符输出流。 
		File  file1=new File("f:"+File.separator+"20201201"+File.separator+"test1.txt");
		FileWriter  out1=new FileWriter(file1,true);
		//Writer  out1=new FileWriter(file1,true);
		BufferedWriter  buffout1=new BufferedWriter(out1);
		
		//BufferedWriter(Writer out, int sz) 创建一个新的缓冲字符输出流,使用给定大小的输出缓 
        //冲区。 
		File  file2=new File("f:"+File.separator+"20201201"+File.separator+"test2.txt");
		FileWriter  out2=new FileWriter(file2,true);
		//Writer  out2=new FileWriter(file2,true);
		BufferedWriter  buffout2=new BufferedWriter(out1,1024);

	}

}

      实例方法

void

close() 关闭流,先刷新。

void

flush() 刷新流。

void

newLine() 写一行行分隔符。

void

write(char[] cbuf, int off, int len) 写入字符数组的一部分。

void

write(int c) 写一个字符

void

write(String s, int off, int len) 写一个字符串的一部分。

package com.wangxing.writerdemo2;

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

public class BufferedWriterDemo2 {

	public static void main(String[] args) throws Exception{
		//BufferedWriter  实例方法
		/*
		//void	write(char[] cbuf) 写入一个字符数组。 
		File  file1=new File("f:"+File.separator+"20201201"+File.separator+"test1.txt");
		FileWriter  out1=new FileWriter(file1,true);
		BufferedWriter  buffout1=new BufferedWriter(out1);
		String  info="world,hello";
		char  cbuf[]=info.toCharArray();
		buffout1.write(cbuf);
		buffout1.flush();
		buffout1.close();
		out1.close();
		*/
		/*
		//void	write(int c) 写一个字符 
		File  file1=new File("f:"+File.separator+"20201201"+File.separator+"test2.txt");
		FileWriter  out1=new FileWriter(file1,true);
		BufferedWriter  buffout1=new BufferedWriter(out1);
		String  info="world,hello";
		char  cbuf[]=info.toCharArray();
		for(char ch:cbuf){
			buffout1.write(ch);
		}
		buffout1.flush();
		buffout1.close();
		out1.close();
		*/
		/*
		//void	write(String str) 写一个字符串 
		File  file1=new File("f:"+File.separator+"20201201"+File.separator+"test3.txt");
		FileWriter  out1=new FileWriter(file1,true);
		BufferedWriter  buffout1=new BufferedWriter(out1);
		String  info="world,hello";
		buffout1.write(info);
		buffout1.flush();
		buffout1.close();
		out1.close();
		*/
		/*
		//void	write(String str, int off, int len) 写一个字符串的一部分。 
		File  file1=new File("f:"+File.separator+"20201201"+File.separator+"test4.txt");
		FileWriter  out1=new FileWriter(file1,true);
		BufferedWriter  buffout1=new BufferedWriter(out1);
		String  info="world,hello";
		buffout1.write(info,6,5);
		buffout1.flush();
		buffout1.close();
		out1.close();
		*/
		
		File  file1=new File("f:"+File.separator+"20201201"+File.separator+"test5.txt");
		FileWriter  out1=new FileWriter(file1,true);
		BufferedWriter  buffout1=new BufferedWriter(out1);
		String  info1="hello";
		String  info2="world";
		buffout1.write(info1);
		//void	newLine() 写一行行分隔符。 
		//buffout1.newLine();  //  "\r\n" 
		buffout1.write("\r\n"); 
		buffout1.write(info2);
		buffout1.flush();
		buffout1.close();
		out1.close();

	}

}

     2.2 public class BufferedReader--从字符输入流读取文本,缓冲字符,以提供字符,数组和行的高效读取。

       构造方法

BufferedReader(Reader in) 创建使用默认大小的输入缓冲区的缓冲字符输入流。

BufferedReader(Reader in, int sz) 创建使用指定大小的输入缓冲区的缓冲字符输入流。

package com.wangxing.readeremo2;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.Reader;

public class BufferedReaderDemo1 {

	public static void main(String[] args)throws Exception {
		//BufferedReader(Reader in) 创建使用默认大小的输入缓冲区的缓冲字符输入流。 
		File file1=new File("f:"+File.separator+"20201201"+File.separator+"test1.txt");
		FileReader  in1=new FileReader(file1);
		BufferedReader  buffin1=new BufferedReader(in1);
		//BufferedReader(Reader in, int sz) 创建使用指定大小的输入缓冲区的缓冲字符输入流。
		File file2=new File("f:"+File.separator+"20201201"+File.separator+"test2.txt");
		Reader  in2=new FileReader(file2);
		BufferedReader  buffin2=new BufferedReader(in1,1024);
	}

}

     实例方法

int

read() 读一个字符。返回值是读取的真实字符数据的整数值,如果已经达到流的末尾,则为-1。

int

read(char[] cbuf) 将字符读入数组。返回总字符数,如果到达文件末尾返回-1

void

close() 关闭流并释放与之相关联的任何系统资源。

String

readLine() 读一行文字。

package com.wangxing.readeremo2;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.Reader;

public class BufferedReaderDemo2 {

	public static void main(String[] args)throws Exception {
		//BufferedReader 实例方法
		
		/*
		//int	read(char[] cbuf) 将字符读入数组。返回总字符数,如果到达文件末尾返回-1
		File file1=new File("f:"+File.separator+"20201201"+File.separator+"test5.txt");
		FileReader  in1=new FileReader(file1);
		BufferedReader  buffin1=new BufferedReader(in1);
		char cbuf[]=new char[(int)file1.length()];
		int len=buffin1.read(cbuf);
		buffin1.close();
		in1.close();
		String  info=new String(cbuf);
		System.out.println(info);
		*/
		/*
		//int	read() 读一个字符。返回值是读取的真实字符数据的整数值,如果已经达到流的末尾,则 
        //为-1。
		File file1=new File("f:"+File.separator+"20201201"+File.separator+"test5.txt");
		FileReader  in1=new FileReader(file1);
		BufferedReader  buffin1=new BufferedReader(in1);
		char cbuf[]=new char[(int)file1.length()];
		int len=0;
		int index=0;
		while((len=buffin1.read())!=-1){
			cbuf[index]=(char)len;
			index++;
		}
		buffin1.close();
		in1.close();
		String  info=new String(cbuf);
		System.out.println(info);
		*/
		
		//String	readLine() 读一行文字。 
		File file1=new File("f:"+File.separator+"20201201"+File.separator+"test5.txt");
		FileReader  in1=new FileReader(file1);
		BufferedReader  buffin1=new BufferedReader(in1);
		String info=null;
		while((info=buffin1.readLine())!=null){
			System.out.println(info);
		}
		buffin1.close();
		in1.close();
	
	}

}

     1.3 public class OutputStreamWriter---将字节输出流转换成字符输出流

       构造方法 :OutputStreamWriter(OutputStream out) 将字节输出流转换成字符输出流

void

write(char[] cbuf) 写入一个字符数组。

void

write(char[] cbuf, int off, int len) 写入字符数组的一部分。

void

write(int c) 写一个字符

void

write(String str) 写一个字符串

void

write(String str, int off, int len) 写一个字符串的一部分。

void

close() 关闭流,先刷新。

void

flush() 刷新流。

package com.wangxing.writerdemo3;

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

public class OutputStreamWriterDemo1 {

	public static void main(String[] args)throws Exception {
		// OutputStreamWriter---字符流
		//将字节输出流转换成字符输出流
		//OutputStreamWriter(OutputStream out) 将字节输出流转换成字符输出流
		/*
		File  file=new  File("F:"+File.separator+"20201201"+File.separator+"test1.txt");
		FileOutputStream output=new FileOutputStream(file);   //字节流
	
		byte  data[]=info.getBytes();
		output.write(data);
		output.close();
		*/
		File  file=new  File("F:"+File.separator+"20201201"+File.separator+"test1.txt");
		FileOutputStream output=new FileOutputStream(file);   //字节流
		OutputStreamWriter  out=new OutputStreamWriter(output); //字符流
		String  info="hello,world";
		out.write(info);
		out.flush();
		out.close();
		output.close();
	}
}

     2.3 public class InputStreamReader---将字节输入流转换成字符输入流

      构造方法:InputStreamReader(InputStream in) 将字节输入流转换成字符输入流

       实例方法

int

read() 读一个字符。返回值是读取的真实字符数据的整数值,如果已经达到流的末尾,则为-1。

int

read(char[] cbuf) 将字符读入数组。返回总字符数,如果到达文件末尾返回-1

void

close() 关闭流并释放与之相关联的任何系统资源。

package com.wangxing.readeremo3;

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class InputStreamReaderDemo1 {

	public static void main(String[] args)throws Exception {
		//InputStreamReader---字符输入流
		//将字节输入流转换成字符输入流
		//InputStreamReader(InputStream in) 将字节输入流转换成字符输入流
		//Scanner类---键盘输入数据---System.in----InputStream[字节输入流]
		//nextLine() -- 读取一行的输入数据
		//BufferedReader--字符输入流---readLine[读取一行]
		//BufferedReader字符输入流执行键盘输入数据????
		//System.in----InputStream[字节输入流]
		//BufferedReader----Reader[字符输入流]
		//InputStreamReader(InputStream in) 将字节输入流转换成字符输入流
		InputStreamReader  inputReader=new InputStreamReader(System.in);
		BufferedReader  reader=new BufferedReader(inputReader);
		System.out.println("请输入数据:");
		String info=reader.readLine();
		System.out.println(info);
		reader.close();
		inputReader.close();

	}

}

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

     输入输出的操作步骤:

      1.创建文件对象【File对象】,指定输入输出的位置

      2.创建输入输出流对象

             1.文本选字符流,其他的选字节

             2.读取选输入,保存选输出

      3.调用read()/write()方法

      4.关闭流

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值