8_IO流总结

关于IO流,今天最后总结一次,有些小tip。IO流重点掌握FileWriter,FileRead,BufferedWriter,BufferedRead.

1.FileWriter 文件输出流

构造函数 FileWriter fw = newFileWriter("test.txt");

 -这个构造函数中,参数是一个文件名字符串。如果没有该文件,fw会自动创建一个文件。

 

 - FileWriter会报出异常,把它抛掉

 

 -文件路径中:

   相对路径:指的是没有带盘符的路径。这样的路径根目录是当前的工程项目。FileWriterfw = new FileWriter("a.txt");a.txt会被创建在工程目录下一级目录里面

   绝对路径:"d:\\File\\a.txt"。在工程目录外面。不建议使用中文路径名字

 

 -追加文件的FileWriter:构造函数

   FileWriterfw = new FileWriter(String fileName,boolean append);

  第二个参数append表示,是否追加内容进去,true 表示追加内容,false表示覆盖原来的内容

  eg:FileWriter fw = new FileWriter("a.txt",true); 表示每次写入都在文件后面插入,而不是重新覆盖

 

 -FileWriter 写入文件的步骤

  //1.创建对象 FileWriter fw = newFileWriter("a.txt",true);

  //2.写入数据 fw.write("hello java");

  //3.刷新缓冲区 fw.flush();

   //4.关闭输出流 fw.close();

  

  -这里注意一点,fw.flush()如果没有刷新缓冲区,内容就不会写到文件中去。运行的时候,文件中不会显示内容的。

  - fw.close()作用是:冲刷缓冲区,再关闭资源。如果写了fw.close() 可以省略fw.flush()

 -fw.write();

 

  char[]chs = {'大','家','好'};
  fw.write("abcde");//写入一个字符串
  fw.write('没');//写入一个字符
  fw.write(chs);//写入一个字符数组
  fw.write("Hello my name is Simons",5,10);//写入字符串的一部分,5是开始的索引位置,10是长度
  fw.close();

 重点掌握是fw.write(String str)

 

2.FileReader 文件输入流

构造函数: FileReader fr = new FileReader("a.txt");

 -FileReader中的文件名,要正确存在。没有目标源文件,运行的时候会报错

 -intlen = fr.read 返回的是一个int类型的数值,不是字符或者字符串,当它读到末尾的时候,会返回-1;

 下面一个程序:

  intch;

 while((ch = fr.read())!=-1)

 {

   System.out.print((char)ch);

 }

 这里说明了ch 接收到的是一个int类型的数值,当要输出字符时候,要进行转换

 -FileReader重点掌握 read()两个方法

 -read()读取一个字符

 

 -while((ch= fr.read())!=-1)

 

 -read(char[]chs):

  char[]chs  = new char[1024]

  intlen;

 while((len = fr.read(chs))!=-1)  读取一个字符数组 返回长度

 

 publicstatic void main(String[] args) throws IOException {
  //一次读取一个字符数组
  char[] chs = new char[10];
  FileReader fr = new FileReader("d.txt");
  int len =0;
  //System.out.println(len);
  while((len = fr.read(chs))!=-1)
  {
   System.out.print(chs);
  }
 }
}

3.字符缓冲输出流 BufferedWriter

  -创建字符缓冲输出流

  FileWriter fw = new FileWriter("a.txt");

  BufferedWriter bw = new BufferedWriter(fw);

  bw.write("hshhshshhshs");

  bw.newLine();//输入一个换行符号

  bw.flush();//输出流都要刷新内存缓冲区,这样内容才能进入文本中

   bw.close();//关闭!!!!记得要写关闭。

 

4.字符缓冲输入流 BufferedReader

  -创建字符缓冲输入流:

 FileReader fr = new FileReader("b.txt");

 BufferedReader bw = new BufferedReader(fr);

 //读取一行字符串

 String line;

 while((line = bw.read())!=null)  //遍历读取每一行bw.read()总是返回字符串

 {

  }

 

==========案例=======================

一,文件和集合混合


/*把集合数据写入到文本中
 * 定义一个集合,存储三个字符串
     然后将三个字符串存储到当前工程下的array.txt中
     要求在array.txt中每行只有一个字符串

 */
public class Test1 {
 public static void main(String[] args) throws IOException {
  ArrayList<String> list = new ArrayList<>();
  String[] strs ={"Hello","World","Java"};


  for(String s:strs)
  {
   list.add(s);
  }
  
  FileWriter fw = new FileWriter("array.txt");
  BufferedWriter bw = new BufferedWriter(fw);
  
  for(String s2:list)
  {
   bw.write(s2);
   bw.newLine();
  }
  bw.close();
 }
}

二 拷贝文件

//缓冲流的使用
/*
 * BufferedWriter 将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入
 * BufferedReader 从字符输入流中读取文本,缓冲各个字,从而实现字符、数组和行的高效读取
 *
 */
public class BufferedWriterDemo {
 public static void main(String[] args) throws IOException {
  //创建输出缓冲流对象
  FileWriter fw = newFileWriter("buffwriter.txt",true);
  FileReader fr = new FileReader("dd.txt");
  BufferedWriter bw =  new BufferedWriter(fw);
  BufferedReader br = new BufferedReader(fr);
  
  //一次读写一个数组
  char[] chs = new char[1024];
  int len;
  while((len = br.read(chs))!=-1)
  {
   bw.write(chs);
  }
  bw.close();
 }
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值