黑马程序员——java基础之IO流

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

IO(Input Output)流

●  IO流用来处理设备之间的数据传输

●  Java对数据的操作是通过流的方式

●  Java用于操作流的对象都在IO包中

●  流按操作数据分为两种:字节流与字符流

●  流按流向分为:输入流,输出流

IO流常用基类

●  字节流的抽象基类:

    InputStreamOutputStream

●  字符流的抽象基类:

    ReaderWriter

●  注:由这四个类派生出来的子类名称都是以其父类名作为子类名的后缀。

    如:InputStream的子类FileInputStream

    如:Reader的子类FileReader

IO程序的书写

●  导入IO包中的类

●  进行IO异常的处理

●  在finally中对流进行关闭

字符流——创建文件

●  创建流对象,建立数据存放文件

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

●  调用流对象的写入方法,将数据写入流

    fw.write("text");

●  关闭流资源,并将流中的数据清空到文件中

    fw.close();

    完整代码:

FileWriter fw = null;
    try {
      fw = new FileWriter("Test.txt");
      fw.write("text");
    } catch (IOException e) {
      System.out.println(e.toString());
    }finally{
      if(fw!=null){
        try {
          fw.close();
        } catch (IOException e) {
          System.out.println(e.toString());
        }
      }
    }
字符流——读取文件

●  建立一个流对象,将已存在的一个文件加载进流

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

●  创建一个临时存放数据的数组

    char[] ch = new char[1024];

●  调用流对象的读取方法将流中的数据读入到数组中

    fr.read(ch);

    完整代码:

FileReader fr = null;
    try {
      fr = new FileReader("d:\\test.txt");
      char[] buf = new char[1024];
      int len = 0;
      while((len=fr.read(buf))!=-1){
        System.out.println(new String(buf,0,len));
      }
    } catch (IOException e) {
      System.out.println("read-Exception:"+e.toString());
    }finally{
      if(fr!=null){
        try {
          fr.close();
        } catch (IOException e) {
          System.out.println("read-Exception:"+e.toString());
        }
      }
    }
    注意:

●  定义文件路径时,可以用“/”或者“\\”。

●  在创建一个文件时,如果目录下有同名文件将被覆盖。

●  在读取文件时,必须保证该文件已存在,否则出异常。

字符流的缓冲区

●  缓冲区的出现提高了对数据的读写效率。

●  对应类

   BufferedWriter

   BufferedReader

●  缓冲区要结合流才可以使用。

●  在流的基础上对流的功能进行了增强。

字节流

●  基本操作与字符流相同

●  但它不仅可以操作字符,还可以操作其他媒体文件

字节流的缓冲区

●  同样是提高了字节流的读写效率

转换流

●  InputStreamReaderOutputStreamWriter

●  转换流的由来

    字符流与字节流之间的桥梁

    方便了字符流与字节流之间的操作

●  转换流的应用

    字节流中的数据都是字符时,转换成字符流操作更高校

标准输入输出流

●  System类中的字段:in,out

●  它们各代表了系统标准的输入和输出设备

●  默认输入设备是键盘,输出设备是显示器

●  System.in的类型是InputStream

●  System.out的类型是PrintStream,是OutputStream的子类FilterOutputStream的子类

File类

●  用来将文件或者文件夹封装成对象

●  方便对文件与文件夹的属性信息进行操作

●  File对象可以作为参数传递给流的构造函数

import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import java.util.Date;

/**
 * A 检查当前文件夹中是否包含目录 demo
 * B 如果没有demo,就创建文件夹demo
 * C 在demo中创建文件 test.txt
 * D 显示demo 文件夹的内容
 * E 显示test.txt 的绝对路径名
 * F 显示test.txt 的文件长度和创建时间
 */
public class FileDemo {
  public static void main(String[] args) throws IOException {
    File dir = new File(".");
    //显示路径
    System.out.println(dir.getCanonicalPath());
    //A
    File demo = new File(dir, "demo");//不是在磁盘上创建
    if(!demo.exists()){
      //B
      demo.mkdir();
    }
    //C
    File test = new File(demo, "test.txt");
    if(!test.exists()){
      //空文件,长度为0
      test.createNewFile();//touch
    }
    //D 显示目录内容
    File[] files = demo.listFiles();//ls demo
    System.out.println(Arrays.toString(files));
    //E
    System.out.println(test.getCanonicalPath());
    //F
    System.out.println(test.length());
    System.out.println(new Date(test.lastModified()));
    //删除文件和目录
    test.delete();//rm
    demo.delete();
  }
}

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值