字符流
Posted $joke
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符流相关的知识,希望对你有一定的参考价值。
字符流:
1.1Reader/Write(字符流的输入和输出流,相对于java文件而言)
1.2能够用TXT编辑器打开的文件,且不乱码就是字符文件可以用字符流来操作
而不能打开的文件,则是字节文件。
2.输入流Reader类(抽象类)
2.1常用方法
int read(); //读取单个字符
int read(byte [] c) //返回实际读取的字符数
int read(char[] c,int off,int len)
void colse() //关闭流
2.2FileReader类(是Reader的子类)
2.2.1 读取方法:File f=new File("文件路径");
Reader fr=new FileReader("文件路径"/f);
示例:
Reader fr=null;
StringBuffer sbf=null;
try {
fr=new FileReader("D:\\Test\\test.txt");
sbf=new StringBuffer();
int length;
while((length=fr.read())!=-1){
char c=(char)length;
sbf.append(c);
}
System.out.println(sbf.toString()); //输出数据
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(fr!=null){
try {
fr.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
2.3字符输入流(BufferedReader类)
2.3.1:优势:提高了读取文件的效率。
2.3.2:创建对象:
Reader fr=new FileReader("文件路径(相对或绝对路径)");
BufferedReader br=new BufferedReader(fr);或BufferedReader br=new BufferedReader(new FileReader(“文件路径(相对或绝对路径)”));
2.3.3: br.readerLine(); 读取一行数据
示例:
Reader fr=null;
BufferedReader br=null;
try {
//先创建一个FileReader对象
fr=new FileReader("D:\\Test\\test.txt");
//在创建一个BufferedReader对象
br=new BufferedReader(fr);
//读取每一行数据
String line=br.readLine();
while(line!=null){
System.out.println(line);
line=br.readLine();//再次赋值进行判断
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
br.close(); //先关
fr.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
3.字符输出流Writer类
3.1常用方法:
write(String s); 将str字符串里包含的字符输出到指定的输出流中
write(String s,int off,int len)
void close() 关闭输出流
void flush() 刷新输出流
3.2FilerWrite(是write的子类)
3.3读取方法:
Writer fr=new FileWriter("文件路径");
示例:
Writer fw=null;
try {
//创建一个FileWrite对象
fw=new FileWriter("D:\\Test\\简介.txt");
//写入信息
fw.write("我热爱我的团队!"+"\r\n");
fw.write("张三"+"\r\n"); //\r\n进行换行
fw.write("18岁");
fw.flush(); //刷新缓冲区
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
fw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
3.4:字符输出流BufferedWrite类
3.4.1:创建对象:
BufferdWriter bw=new BufferedWriter(new FileWrite(“文件路径”))
示例:
Writer fw=null;
BufferedWriter bw=null;
try {
fw=new FileWriter("D:\\Test\\hello.txt");
bw=new BufferedWriter (fw);
//写入信息
bw.write("大家好");
bw.write("我正在学习BufferedWriter。");
bw.newLine(); //换行
bw.write("请多多指教!");
bw.flush(); //刷新缓冲区
bw.close(); //关闭流
System.out.println("成功插入数据!");
//读取文件内容
FileReader fr=new FileReader("D:\\Test\\hello.txt");
StringBuffer sbf=new StringBuffer();
int length;
while((length=fr.read())!=-1){
char c=(char)length;
sbf.append(c);
}
System.out.println(sbf.toString());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
以上是关于字符流的主要内容,如果未能解决你的问题,请参考以下文章
IO流25 - 字符流 - 字符输出流的缓冲流以及字符输入流的缓冲流BufferedWriter和BufferedReader