java中的输入输出流3

java中的输入输出流3

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

      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.writerDome1;

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

public class FileWriterDemo1 {
	public static void main(String args[])throws Exception{
		//字符输出流-----Write[抽象类]
		//FileWriter  构造方法
		//FileWriter(File file);通过一个File对象构造一个不可追加的FileWriter对象
		//File file----File类型的输出路径
		File file1=new File("E:"+File.separator+"WX"+File.separator+"JavaSE"+File.separator+"InOnput"+"fileWrite1.txt");
		FileWriter write1=new FileWriter(file1);
		Writer write11=new FileWriter(file1);
		
		//FileWriter(String fileName);给一个String对象构造一个不可追加的FileWriter对象
		//String fileName----String类型的输出路径
		String path1="E:"+File.separator+"WX"+File.separator+"JavaSE"+File.separator+"InOnput"+"fileWrite2.txt";
		FileWriter write2=new FileWriter(path1);
		Writer write22=new FileWriter(path1);
		
		//FileWriter(String fileName,boolean append);给一个String对象构造一个是否允许追加的FileWriter对象
		String path2="E:"+File.separator+"WX"+File.separator+"JavaSE"+File.separator+"InOnput"+"fileWrite3.txt";
		FileWriter writer3=new FileWriter(path2,true);
		Writer writer33=new FileWriter(path2,false);
		
		//FileWriter(File file,boolean append);给一个File对象构造一个是否允许追加的FileWriter对象
		File file2=new File("E:"+File.separator+"WX"+File.separator+"JavaSE"+File.separator+"InOnput"+"fileWrite4.txt");
		FileWriter writer4=new FileWriter(file2,true);
		Writer writer44=new FileWriter(file2,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.writerDome1;

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

public class FileWriterDemo2 {
	public static void main(String args[])throws Exception{
		//字符输出流----Writer[抽象类]
		//FileWriter--实例方法
		//void write(char char[]);写入一个字符数组
		File file1=new File("E:"+File.separator+"WX"+File.separator+"JavaSE"+File.separator+"InOnput"+File.separator+"fileWrite1.txt");
		FileWriter writer1=new FileWriter(file1,true);
		String strval1="hello,World";
		char[] chararray1=strval1.toCharArray();
		writer1.write(chararray1);
		writer1.flush();
		writer1.close();
		
		//void write(int c);写入一个字符
		File file2=new File("E:"+File.separator+"WX"+File.separator+"JavaSE"+File.separator+"InOnput"+File.separator+"fileWrite2.txt");
		FileWriter writer2=new FileWriter(file2,true);
		String strval2="hello,World";
		char []chararray2=strval2.toCharArray();
		for(char name:chararray2){
			writer2.write(name);
		}
		writer2.flush();
		writer2.close();
		
		//void write(String str);写入一个字符串
		File file3=new File("E:"+File.separator+"WX"+File.separator+"JavaSE"+File.separator+"InOnput"+File.separator+"fileWrite3.txt");
		FileWriter writer3=new FileWriter(file3,true);
		writer3.write("hello,world");
		writer3.flush();
		writer3.close();
		
		//void write(String str,int off,int len);写一个字符串的一部分
		File file4=new File("E:"+File.separator+"WX"+File.separator+"JavaSE"+File.separator+"InOnput"+File.separator+"fileWrite4.txt");
		FileWriter writer4=new FileWriter(file4,true);
		String strval3="hello,world";
		writer4.write(strval3,6,5);
		writer4.flush();
		writer4.close();
		
	}
}

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

      public abstract class Reader---不能new

      2.1 FileReader---字符文件的

构造方法

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

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

package com.wangxing.readerDome1;

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);通过给定的File对象创建一个新的FileReader输入流对象
		File file1=new File("E:"+File.separator+"WX"+File.separator+"JavaSE"+File.separator+"InOnput"+File.separator+"FileWrite1.txt");
		FileReader in1=new FileReader(file1);
		Reader in11=new FileReader(file1);
		
		//FileReader(String path);通过给定的String对象创建一个新的FileReader输入流对象
		
		String path1="E:"+File.separator+"WX"+File.separator+"JavaSE"+File.separator+"InOnput"+File.separator+"FileWrite2.txt";
		FileReader in2=new FileReader(path1);
		Reader in22=new FileReader(path1);
	}
}

实例方法

int

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

int

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

void

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

package com.wangxing.readerDome1;

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

public class FileReaderDemo2 {
	public static void main(String args[])throws Exception{
		//字节输入流----Reader[抽象类]
		//FileReader 实例方法
		//int read(char[] chararray);将字符读入指定的字符数组,返回读取的字符总数,若到达文件末尾则返回-1;
		File file1=new File("E:"+File.separator+"WX"+File.separator+"JavaSE"+File.separator+"InOnput"+File.separator+"FileWrite1.txt");
		FileReader in1=new FileReader(file1);
		char[] chararray1=new char[(int)(file1.length())];
		int len=in1.read(chararray1);
		in1.close();
		String strval1=new String(chararray1,0,len);
		System.out.println(strval1);
		
		//int read();读取一个字符,返回值是字符数据本身的整数值,如果已经到达文件末尾则返回-1
		File file2=new File("E:"+File.separator+"WX"+File.separator+"JavaSE"+File.separator+"InOnput"+File.separator+"FileWrite2.txt");
		FileReader in2=new FileReader(file2);
		char []chararray2=new char[(int)(file2.length())];//保存读取数据的的字符数组
		int val=0;//保存读取的每一个字符数据所代表的整数值
		int index=0;//字符数组下标
		while((val=in2.read())!=-1){
			chararray2[index]=(char)(val);
			index++;
		}
		in2.close();
		String strval2=new String(chararray2);
		System.out.println(strval2);

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

构造方法

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

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

package com.wangxing.writerDome2;

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

public class BufferedWriterDemo1 {
	public static void main(String args[])throws Exception{
		//BufferedWriter  构造方法
		//BufferedWriter(Writer out);创建使用默认大小的输出缓冲区的缓冲字符输出流
		File file1=new File("E:"+File.separator+"WX"+File.separator+"JavaSE"+File.separator+"InOnput"+File.separator+"fileWrite1.txt");
		FileWriter writer1=new FileWriter(file1);
		BufferedWriter buffwriter1=new BufferedWriter(writer1);
		
		//BufferedWriter(Writer out,int sz);创建一个新的缓冲字符输入流,使用给定大小的输出缓冲区
		File file2=new File("E:"+File.separator+"WX"+File.separator+"JavaSE"+File.separator+"InOnput"+File.separator+"fileWrite2.txt");
		FileWriter writer2=new FileWriter(file2);
		BufferedWriter buffwriter2=new BufferedWriter(writer2,1024*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.writerDome2;

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

public class BufferedWriterDemo2 {
	public static void main(String args[])throws Exception{
		//BufferedWriter 实例方法
		//void write(char[] char);写入一个字符数组
		File file1=new File("E:"+File.separator+"WX"+File.separator+"JavaSE"+File.separator+"InOnput"+File.separator+"BufferedWrite1.txt");
		FileWriter out1=new FileWriter(file1,true);
		BufferedWriter buffwriter1=new BufferedWriter(out1);
		String str1="world,hello";
		char[] chararray1=str1.toCharArray();
		buffwriter1.write(chararray1);
		buffwriter1.flush();
		buffwriter1.close();
		out1.close();
		
		//void write(int c);写入一个字符
		File file2=new File("E:"+File.separator+"WX"+File.separator+"JavaSE"+File.separator+"InOnput"+File.separator+"BufferedWrite2.txt");
		FileWriter out2=new FileWriter(file2);
		BufferedWriter buffwriter2=new BufferedWriter(out2);
		String str="world,hello";
		char[] chararray2=str.toCharArray();
		for(char name:chararray2){
			buffwriter2.write(name);
		}
		buffwriter2.flush();
		buffwriter2.close();
		out2.close();
		
		//void write(String str);写入一个字符串
		File file3=new File("E:"+File.separator+"WX"+File.separator+"JavaSE"+File.separator+"InOnput"+File.separator+"BufferedWrite3.txt");
		FileWriter out3=new FileWriter(file3);
		BufferedWriter buffwriter3=new BufferedWriter(out3);
		String str3="world,hello";
		buffwriter3.write(str3);
		buffwriter3.flush();
		buffwriter3.close();
		out3.close();
		
		//void write(String str ,int off,int len);写入一个字符串的一部分
		File file4=new File("E:"+File.separator+"WX"+File.separator+"JavaSE"+File.separator+"InOnput"+File.separator+"BufferedWrite4.txt");
		FileWriter out4=new FileWriter(file4,true);
		BufferedWriter buffwriter4=new BufferedWriter(out4);
		String str4="world,hello";
		buffwriter4.write(str4,6,5);
		buffwriter4.flush();
		buffwriter4.close();
		out4.close();
		
		//void newLine();写一行分隔符相当于"\r\n"
		File file5=new File("E:"+File.separator+"WX"+File.separator+"JavaSE"+File.separator+"InOnput"+File.separator+"BufferedWrite5.txt");
		FileWriter out5=new FileWriter(file5);
		BufferedWriter buffwriter5=new BufferedWriter(out5);
		String str5="world";
		String str6="hello";
		buffwriter5.write(str5);
		buffwriter5.newLine();
		buffwriter5.write("\r\n");
		buffwriter5.write(str6);
		buffwriter5.flush();
		buffwriter5.close();
		out5.close();
	}
}

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

构造方法

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

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

package com.wangxing.readerDome2;

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

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

实例方法

int

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

int

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

void

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

String

readLine() 读一行文字。

 
package com.wangxing.readerDome2;

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

public class BufferReaderDemo2 {
	public static void main(String args[])throws Exception{
		//BufferedReader 实例方法
		//int read(char[] char);将字符读入数组,返回读取的字符总数,如果到达文件末尾则返回-1
		File file1=new File("E:"+File.separator+"WX"+File.separator+"JavaSE"+File.separator+"InOnput"+File.separator+"BufferedWrite1.txt");
		FileReader in1=new FileReader(file1);
		BufferedReader buffin1=new BufferedReader(in1);
		char []chararray1=new char[(int)(file1.length())];
		buffin1.read(chararray1);
		buffin1.close();
		String strval1=new String(chararray1);
		System.out.println(strval1);
		
		//int read();读取一个字节,返回值是字节数据本身所代表的整数值,如果到达文件末尾咋返回-1
		File file2=new File("E:"+File.separator+"WX"+File.separator+"JavaSE"+File.separator+"InOnput"+File.separator+"BufferedWrite2.txt");
		FileReader in2=new FileReader(file2);
		BufferedReader buffin2=new BufferedReader(in2);
		char []chararray2=new char[(int)(file2.length())];
		int val1=0;
		int index=0;
		while((val1=buffin2.read())!=-1){
			chararray2[index]=(char)val1;
			index++;
		}
		buffin2.close();
		in2.close();
		String strval2=new String(chararray2);
		System.out.println(strval2);
		
		//String readLine();读取一行文字
		File file3=new File("E:"+File.separator+"WX"+File.separator+"JavaSE"+File.separator+"InOnput"+File.separator+"BufferedWrite5.txt");
		FileReader in3=new FileReader(file3);
		BufferedReader buffin3=new BufferedReader(in3);
		String info=null;
		while((info=buffin3.readLine())!=null){
			System.out.println(info);
		}
		//String strval3=buffin3.readLine();
		buffin3.close();
		in3.close();
		//System.out.println(strval3);
	}
}

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.writerDome3;

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 file1=new File("E:"+File.separator+"WX"+File.separator+"JavaSE"+File.separator+"InOnput"+File.separator+"OutputStreamWriter1.txt");
		FileOutputStream out1=new FileOutputStream(file1);//字节流
		String info1="hello,world";
		byte []byteararray1=info1.getBytes();
		out1.write(byteararray1);
		out1.flush();
		out1.close();
		
		File file2=new File("E:"+File.separator+"WX"+File.separator+"JavaSE"+File.separator+"InOnput"+File.separator+"OutputStreamWriter2.txt");
		FileOutputStream out2=new FileOutputStream(file2);//字节流
		OutputStreamWriter writer1=new OutputStreamWriter(out2);//字符流
		writer1.write("hello,world");
		writer1.flush();
		writer1.close();
		out2.close();
		
		
	}
}

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

构造方法

InputStreamReader(InputStream in) 将字节输入流转换成字符输入流

实例方法

int

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

int

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

void

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

package com.wangxing.readerDome3;

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 in1=new InputStreamReader(System.in);
		BufferedReader buffin1=new BufferedReader(in1);
		System.out.println("请输入数据");
		String info=buffin1.readLine();
		System.out.println("你输入的数据是"+info);
		buffin1.close();
		in1.close();

      输入输出流的操作步骤

            输入输出的操作步骤:

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

            2.创建输入输出流对象

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

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

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

            4.关闭流

猜你喜欢

转载自blog.csdn.net/m0_49935332/article/details/112188227