疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

IO流FileReader和FileWriter


 

   

  简单的说明

  从字符类型(char)的文件中读取和写入数据,我们要使用FileWriter和FileReader类来实现。

  FileWriter和FileReader FileWriter类

  构造方法:

  FileWriter(String filename)

  FileWriter(File file)

  关键方法:

  write(int oneChar)

  write(char[] buffer, int offset, int count)

  FileReader类

  构造方法:

  FileReader(String filename)

  FileReader(File file)

  关键方法:

  read()

  read(char[] buffer, int offset, int count)

  一个测试的Demo

  定义三个方法:

  (1)testFileReader方法—读取文件内容

  FileReader的使用方法:

  //1.创建一个输入字符文件

  //2.创建一个FileReader对象

  //3.调用read方法,读取内容数据

  //4. 关闭对应的流

  (2)testFileWriter方法—-往文件写内容

  FileWriter的使用方法:

  //1.创建一个File文件

  //2.创建一个FileWriter对象

  //3.调用write方法写入数据

  //4.关闭对应的输出流

  (3)copyByFileReaderFileWriter方法—-复制文件的方法

  //1.定义输入和输出的文件

  //2.定义输入流和输出流的对象

  //3.执行复制操作

  //4.关闭对应的流,先关输出流,后关输入流

  import java.io.File;

  import java.io.FileReader;

  import java.io.FileWriter;

  import java.io.IOException;

  public class FileReaderFileWriter {

  //同时使用FileReader和FileWriter,实现二个文本文件的复制

  public static void copyByFileReaderFileWriter(String src,String des){

  //2.定义二个字符流,输入流,输出流

  FileReader fr = null;

  FileWriter fw = null;

  try {

  //1.定义二个文件,一个输入,一个输出

  File fin = new File(src);

  File fout = new File(des);

  fr = new FileReader(fin);

  fw = new FileWriter(fout);

  //3.复制操作

  char[] c = new char[20];

  int len;

  while((len = fr.read(c)) != -1){

  fw.write(c, 0, len);

  }

  } catch (IOException e) {

  // TODO Auto-generated catch block

  e.printStackTrace();

  }finally{

  //4. 关闭对应的流,先关输出流,再关输入流

  if(fw != null){

  try {

  fw.close();

  } catch (IOException e) {

  // TODO Auto-generated catch block

  e.printStackTrace();

  }

  }

  if(fr != null){

  try {

  fr.close();

  } catch (IOException e) {

  // TODO Auto-generated catch block

  e.printStackTrace();

  }

  }

  }

  }

  //FileWriter使用样例---处理字符

  public static void testFileWriter(){

  //2.定义一个FileWriter对象

  FileWriter fw = null;

  try {

  //1.定义一个输出字符文件

  File f1 =new File("hello_FileWriter.txt");

  fw = new FileWriter(f1);

  //3.输出操作

  String str = "我是中国人,我爱打dota,还爱搞机";

  fw.write(str);

  } catch (IOException e1) {

  // TODO Auto-generated catch block

  e1.printStackTrace();

  }finally{

  //4.关闭对应的流

  if(fw != null){

  try {

  fw.close();

  } catch (IOException e) {

  // TODO Auto-generated catch block

  e.printStackTrace();

  }

  }

  }

  }

  //FileReader使用样例---处理字符

  public static void testFileReader(){

  //2.定义一个FileReader

  FileReader fr = null;

  try {

  //1.定义一个输入字符文件

  File f1 =new File("hello.txt");

  fr = new FileReader(f1);

  //3.读入操作

  char[] c = new char[10];

  int len;

  while((len = fr.read(c)) != -1){

  System.out.print(new String(c,0,len));

  }

  }catch (IOException e) {

  // TODO Auto-generated catch block

  e.printStackTrace();

  }finally{

  //4.关闭对应的流

  if(fr != null){

  try {

  fr.close();

  } catch (IOException e) {

  // TODO Auto-generated catch block

  e.printStackTrace();

  }

  }

  }

  }

  }

  调用:

  //FileReader使用样例---处理字符

  FileReaderFileWriter.testFileReader();

  //FileWriter使用样例---处理字符

  FileReaderFileWriter.testFileWriter();

  //同时使用FileReader和FileWriter,实现二个文本文件的复制

  FileReaderFileWriter.copyByFileReaderFileWriter("hello_FileWriter.txt", "hello_FileWriter_copy.txt");