1. 字符流
字符流是以Reader和Writer为基础派生的一系列类
2. 字符输入流FileReader
FileReader构造方法
public class FileReader extends InputStreamReader //继承InputStreamReader
public FileReader(String fileName) //创建一个指定文件名的字符输入流
public FileReader(File file) //创建一个指定文件对象的字符输入流
public FileReader(FileDescriptor fd) //创建一个指定文件描述符的字符输入流
FileReader实例(读取字符,只能读取文本文件)
public static void main(String[] args){
FileReader fr = null;
try{
fr = new FileReader("C:\\Users\\THINK\\Desktop\\JavaTest\\Temp.txt");
char[] chars = new char[4];
int readData = 0;
while((readData = fr.read(chars))!=-1){
System.out.print(new String(chars,0,readData));
}
}catch(Exception e){
e.printStackTrace();
}finally{
if(fr != null){
try{
fr.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
}
3. 字符输出流FileWriter
FileWriter构造方法
public class FileWriter extends OutputStreamWriter //继承OutputStreamWriter
public FileWriter(String fileName) //创建一个指定文件名的字符输出流
public FileWriter(String fileName, boolean append) //是否追加
public FileWriter(File file) //创建也给指定文件对象的字符输出流
public FileWriter(File file, boolean append) //是否追加
public FileWriter(FileDescriptor fd) //指定字符描述符
public FileWriter(String fileName, Charset charset) //创建一个使用命名字符集的字符输出流
public FileWriter(String fileName, Charset charset, boolean append) //是否追加
public FileWriter(File file, Charset charset) //使用命名字符集
public FileWriter(File file, Charset charset, boolean append) //是否追加
FileWriter实例
public class FileWriterTest01{
public static void main(String[] args){
FileWriter fw = null;
try{
fw = new FileWriter("C:\\Users\\THINK\\Desktop\\JavaTest\\Temp01.txt",true);
char[] chars = {'奥','运','会'};
fw.write(chars);
fw.write(chars,1,2); //可以写入指定长度字符
fw.write("helloworld"); //可以直接写入字符串
fw.write("hellojava");
fw.flush();
}catch(Exception e){
e.printStackTrace();
}finally{
if(fw!=null){
try{
fw.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
}
}
使用FileReader和FileWriter进行文本文件的拷贝(只能拷贝普遍文本文件)
public class CopyTest02{
public static void main(String[] args){
FileReader fr = null;
FileWriter fw = null;
try{
fr = new FileReader("D:\\JavaProject\\chapter19.iml");
fw = new FileWriter("C:\\Users\\THINK\\Desktop\\JavaTest\\chapter19.iml");
char[] chars = new char[1024*512];
int readData = 0;
while((readData = fr.read(chars)) != -1){
fw.write(chars,0,readData);
}
fw.flush();
}catch(Exception e){
e.printStackTrace();
}finally{
if(fw != null){
try{
fw.close();
}catch(Exception e){
e.printStackTrace();
}
}
if(fr != null){
try{
fr.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
}
}
4. 字符缓冲输入流BufferedReader
BufferedReader是缓冲字符输入流,为其他字符输入流添加缓冲功能。
BufferedReader构造方法
public class BufferedReader extends Reader //继承Reader
public BufferedReader(Reader in, int sz) //创建指定大小输入缓冲区的缓冲字符输入流
public BufferedReader(Reader in) //创建默认大小输入缓冲区的缓冲字符输入流
BufferedReader实例
public class BufferedReaderTest01{
public static void main(String[] args) throws IOException{
FileReader fr = new FileReader("C:\\Users\\THINK\\Desktop\\JavaTest\\chapter19.iml");
BufferedReader br = new BufferedReader(fr); //需要传入一个字符流
/* String strLine1 = br.readLine(); //可以直接读取一行
System.out.println(strLine1);
String strLine2 = br.readLine();
System.out.println(strLine2); */
String strLine = null;
while((strLine = br.readLine())!=null){
System.out.println(strLine);
}
br.close(); //只需关闭缓冲流,因为在源码中已经关闭了字符流
}
}
5. 字符缓冲输出流BufferedWriter
BufferedWriter是缓冲字符输出流,为其他字符输出流添加缓冲功能。
BufferedWriter构造方法
public class BufferedWriter extends Writer //继承Writer
public BufferedWriter(Writer out) //创建默认大小的缓冲字符输出流
public BufferedWriter(Writer out, int sz) //创建指定大小的缓冲字符输出流
BufferedWriter实例
public class BufferedWriterTest01{
public static void main(String[] args) throws IOException{
FileWriter fw = new FileWriter("C:\\Users\\THINK\\Desktop\\JavaTest\\Temp04.txt");
BufferedWriter bw = new BufferedWriter(fw);
bw.write("hello world");
bw.write("hello java");
bw.flush();
bw.close();
}
}
6. 转换流InputStreamReader
InputStreamReader作用是将字节输入流转换为字符输入流,继承Reader。
InputStreamReader实例
public class InputStreamReaderTest01{
public static void main(String[] args) throws IOException{
/* FileInputStream fis = new FileInputStream("C:\\Users\\THINK\\Desktop\\JavaTest\\chapter19.iml");
InputStreamReader isr = new InputStreamReader(fis); //BufferedReader使用字符流作为参数,所以要转换
BufferedReader br = new BufferedReader(isr); //参数要传入一个字符流 */
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("C:\\Users\\THINK\\Desktop\\JavaTest\\chapter19.iml"))); //以上三行可以写到一块
String strLine = null;
while((strLine = br.readLine()) != null){
System.out.println(strLine);
}
br.close();
}
}
7. 转换流OutputStreamWriter
public class OutputStreamWriterTest01{
public static void main(String[] args) throws IOException{
/* FileOutputStream fos = new FileOutputStream("C:\\Users\\THINK\\Desktop\\JavaTest\\Temp05.txt");
OutputStreamWriter osw = new OutputStreamWriter(fos);
BufferedWriter bw = new BufferedWriter(osw); */
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("C:\\Users\\THINK\\Desktop\\JavaTest\\Temp05.txt",true)));
bw.write("hello java");
bw.write("hello olympic");
bw.flush();
bw.close();
}
}