字符流专门用来操作文本数据的io操作类
字符输出流
Write类:这是一个抽象类,不能new,需要使用子类的进行创建对象。
1.FileWrilter类
构造方法:
1)FileWrite(File file)给一个File对象构造一个FileWrite对象。
2)FileWrite (File file,boolean append) 给一个File对象构造一个是否可以追加的FileWrite对象。
3)FileWrite(String fileName)给一个String对象构造出来FileWrite对象。
4)FileWrite(String fileName,boolean append)给一个String构造出来的是否可以追加的FileWrite的对象。
例子:
//构造函数
File file = new File("E:"+File.separator + "wxpx" + File.separator + "lianxi" + File.separator + "JavaSE" + File.separator + "file1.txt");
//1.构造函数 不可追加数据
FileWriter out = new FileWriter(file);
//2.可以追加数据
File file2 = new File("E:"+File.separator + "wxpx" + File.separator + "lianxi" + File.separator + "JavaSE" + File.separator + "file2.txt");
FileWriter out2 = new FileWriter(file,true);
//3.构造出传入字符串对象的,,不可以追加的对象
FileWriter out3 = new FileWriter("E:"+File.separator + "wxpx" + File.separator + "lianxi" + File.separator + "JavaSE" + File.separator + "file3.txt");
//4.构造出传入字符串对象的,可以追加的对象
FileWriter out4 = new FileWriter("E:"+File.separator + "wxpx" + File.separator + "lianxi" + File.separator + "JavaSE" + File.separator + "file4.txt");
实例方法:
返回值 | 方法体 | 作用 |
void | write(char[] cbuf) | 写入一个字符数组 |
void | Write(char[] cbuf,int startindex,int len) | 写入字符串的一部分 |
void | write(int c) | 写入一个字符 |
void | write(String str) | 写入一个字符串 |
void | write(String str ,int indexof ,int len) | 写入一部分字符串数据 |
void | close() | 关闭数据流(需要刷新) |
void | flush() | 刷新流 |
例子:(构造函数在上方)
//实例方法
char [] arrchar ={'A','B','C','a','b','c'};
//out.write(arrchar);
out.write(arrchar);
out.flush();
out.close();
out2.write("Hello,world");
out3.write(arrchar, 3, 2);
out2.flush();
out2.close();
out3.close();
out4.write('c');
out4.close();
2.BufferedWriter类
BufferedWriter类的构造方法
BufferedWriter(Writer out)通过字符输出流的对象创建BufferedWriter
例子:
File file = new File("E:"+File.separator + "wxpx" + File.separator + "lianxi" + File.separator + "Java" + File.separator + "bfwfile.txt");
Writer out = new FileWriter(file);
BufferedWriter bfWriter = new BufferedWriter(out);
BufferedWriter类的实例方法
返回值 | 方法体 | 作用 |
void | write(char[] cbuf) | 写入一个字符数组 |
void | Write(char[] cbuf,int startindex,int len) | 写入字符串的一部分 |
void | write(int c) | 写入一个字符 |
void | write(String str) | 写入一个字符串 |
void | write(String str ,int indexof ,int len) | 写入一部分字符串数据 |
void | close() | 关闭数据流(需要刷新) |
void | flush() | 刷新流 |
void | newLine() | 写一行行分隔符。(写入换行) |
例子:
//实例方法
String str1 = "hello,world";
char arrchar[] = {'你','好','世','界'};
bfWriter.write(arrchar);
bfWriter.newLine();
bfWriter.write(str1);
bfWriter.close();
out.close();
3.OutputStreamWriter类
OutputStreamWriter类构造方法
OutputStreamWriter(OutputStream out)将字节输出流转换成字符输出流
字符输入流
Reader类---抽象类---不能new---子类
1.FileReader类
FileReader类的构造方法
FileReader(File file) 给一个File对象构造一个FileReader对象。
FileReader(String fileName) 给一个String对象构造一个FileReader对象。
例子:
//构造方法
File file = new File("E:"+File.separator + "wxpx" + File.separator + "lianxi" + File.separator + "Java" + File.separator + "file1.txt");
FileReader in = new FileReader(file);
FileReader类的实例方法
返回值 | 方法体 | 作用 |
int | read() | 读一个字符。返回值是读取的真实字符数据的整数值,如果已经达到流的末尾,则为-1 |
int | read(char[] cbuf) | 将字符读入数组。返回总字符数,如果到达文件末尾返回-1 |
void | close() | 关闭流并释放与之相关联的任何系统资源。 |
例子:
//读取一个字符
char f = (char)in.read();
System.out.println(f);
in.close();
//读取到字符数组中去
FileReader in2 = new FileReader("E:"+File.separator + "wxpx" + File.separator + "lianxi" + File.separator + "Java" + File.separator + "file2.txt");
char f2[] = new char[(int) file.length()];
in2.read(f2);
in2.close();
for (char c : f2) {
System.out.println("c = " + c);
}
2.BufferedReader类
BufferedReader类构造方法
BufferedReader(Reader in)通过字符输入流对象创建一个BufferedReader
BufferedReader类实例方法
返回值 | 方法体 | 作用 |
int | read() | 读一个字符。返回值是读取的真实字符数据的整数值,如果已经达到流的末尾,则为-1 |
int | read(char[] cbuf) | 将字符读入数组。返回总字符数,如果到达文件末尾返回-1 |
void | close() | 关闭流并释放与之相关联的任何系统资源。 |
String | readLine() | 读一行文字。 |
例子:
// BufferedReader类
//文件对象
File file = new File("E:"+File.separator + "wxpx" + File.separator + "lianxi" + File.separator + "Java" + File.separator + "file1.txt");
//构造方法
FileReader out = new FileReader(file);
BufferedReader in = new BufferedReader(out);
//读取一个字符
// char f = (char) in.read();
// System.out.println(f);
int f;
while ((f = in.read())!= -1) {
System.out.println((char) f);
}
in.close();
out.close();
//将读取的数据放在字符数组种
File file1 = new File("E:"+File.separator + "wxpx" + File.separator + "lianxi" + File.separator + "Java" + File.separator + "file2.txt");
char[] chararr = new char[(int) (file1.length())];
FileReader in1 = new FileReader(file1);
BufferedReader bfin = new BufferedReader(in1);
bfin.read(chararr);
for (char c : chararr) {
System.out.println("c = " + c);
}
bfin.close();
in1.close();
3.InputStreamReader类【字节输入流转成字符输入流】
InputStreamReader类构造方法。
InputStreamReader(InputStream in)字节输入流转成字符输入流。
无奈源于不够强大