IO流之二

 

    

      今天主要学了2个小节 分别是12.4—文件操作,12.5—字符流,不过东西挺多的,本来消化就不好,这次吸收是个问题。

      先说12.4—文件操作;

      其实这节主要讲的是File类,File类答题的意思就是提供了一些方法可以用来操作文件和获得文件的信息。可以创建新目录、创建临时文件夹、改文件名、删文件等。

      File f1 = new File(“data.txt”);//指定文件名创建f1

      File f2 = new File(“\\mydir”,“data.txt”);//指定文件名和目录创建f2

      File dir = new File(“\\etc”);//指定目录名创建dir

      File f3 = new File(dir,“data.txt”);以目录对象dir和文件名创建f3

\\表示绝对路径,否则表示相对路径。

      书上还讲了怎么样创建和删除文件的小例子,在此不一一列举。

接下来一小节讲的是--- 文件过滤器讲了 FileFilter和FilenameFilter接口

这两个东西就不太好理解了,主要是用来实现对文件名字符串的过滤。用途就是过滤。

使用File类的list()方法和listFiles()方法显示文件清单时,可以设置一个文件过滤器作为参数。

     12.4.3 随机文件操作

      使用RandomAccessFile类可以“随机访问文件”。有两个特点,对一个文件可写可读,可以在文件中指定任何位置读取或写入数据。

      接下来是下一节12.5 --- 字符流

      Reader类和Writer类

      Reader类为所有输入流的超类,

      Writer类为所有输出流的超类。

 Public void write(String str) throws IOException:将字符串写入输出流

 Public abstract void flush() throws IOException:将缓冲区内容写入输出流

   字符文件流FlieReader和FileWriter.

   这两类用于字符文件的输入/输出处理,他们是InputStreamReader和OutStreamWriter的子类。

 

字符缓冲流

 

字符缓冲输入流BuffererReader类

字符缓冲输出流BufferedWriter类

BufferedReader

构造方法:

      public BufferedReader(Reader in);

      public BufferedReader(Reader in, int sz);

其它常用方法:read()、readLine()等。

BufferedWriter

构造方法:

     public BufferedWriter(Writer in);

     public BufferedWriter(Writer in, int sz);

其它常用方法:newLine()、write()等。

接下来贴上今天的练习:

 

import java.io.*;

public class DataStreamTest {

 

 

    public static void main(String[] args) {

       try{

           String name [] = {"Tom","Jack","Mary"};

           double salary[] = {250,256.7,300.6};

          

           FileOutputStream fos = new FileOutputStream("res/salary");

           DataOutputStream dos = new DataOutputStream(fos);

          

           for(int i=0;i<name.length;i++){

              dos.writeUTF(name[i]);

              dos.writeDouble(salary[i]);

           }

           fos.close();

           dos.close();

          

           FileInputStream fis = new FileInputStream("res/salary");

           DataInputStream dis = new DataInputStream(fis);

          

           for(int i = 0 ;i<name.length; i++){

              System.out.println(dis.readUTF()

                          +" : " + dis.readDouble());                          

          

           }

       }catch(Exception e ){

             

           }

           

    }

 

}

Data类可以封装File类,一层套一层,如果缓冲区地方不够,就要用flush()来清理缓存空间,注意在程序最后写close()的时候

一定要从最外层开始写close(),也就是一般从Data类开始close()。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值