java中的输入输出流3
9.5.常用的字符输入与字符输出流类
1.字符输出流---顶级类Writer
public abstract class Writer---不能new
- 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.关闭流