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.关闭流