Java基础学习——Java流(一)File类、I/O流的引入

一、File类

在Java中,可以将文件封装为File类的对象,对这个对象进行操作。

1.常用方法

1)对文件的操作:判断可读,可写,存在,输出文件名,文件大小,文件路径,比较两个文件等

2)对目录的操作:创建目录,遍历目录,删除目录等

package com.rzd.no04file;

import java.io.File;

public class Demo01 {
    public static void main(String[] args) /*throws IOException*/ {
        //先保证在对应的路径存在文件,这里在D盘新建一个文件test.txt,内容为"abc你好"。

        //创建一个File类的对象new File(),将文件路径放在()中
        //由于不同系统中的盘符的分隔符不同,所以可以直接用File.separator获取当前环境,盘符的分隔符
        File f1 = new File("d:"+ File.separator+"javatest"+File.separator+"test.txt");
        /*//在确定盘符的情况下也可以直接写,但是要注意转义
        File f11 = new File("d:\\javatest\\test.txt");
        File f12 = new File("d:/javatest/test.txt");*/

        //常用方法
        //1.文件是否可读,可写
        System.out.println(f1.canRead());//true
        System.out.println(f1.canWrite());//true
        //2.输出文件名称,文件大小,文件路径
        System.out.println(f1.getName());//test.txt
        System.out.println(f1.length());//9,右键查看文件属性,显示9字节

        System.out.println(f1.getPath());//绝对路径:d:\javatest\test.txt
        System.out.println(f1.getAbsolutePath());//相对路径:d:\javatest\test.txt
        System.out.println(f1/*.toString()*/);//toString()的效果是相对路径
        System.out.println(f1.getParent());//输出上级目录:d:\

        //3.判断文件是否存在,判断是否是一个目录or文件,判断文件是否被隐藏
        System.out.println(f1.exists());//true
        System.out.println(f1.isDirectory());//false
        System.out.println(f1.isFile());//true
        System.out.println(f1.isHidden());//false

        //4.比较两个文件
        File f2 = new File("d:" + File.separator + "javatest" + File.separator + "test.txt");
        System.out.println(f1==f2);//false比较地址,虽然是一个文件,但是f2是新创建的对象,地址不会相同
        System.out.println(f1.equals(f2));//true比较两个对象对应的文件的路径

        /*//如果文件不存在,则创建这个文件,如果存在则删除这个文件
        if (f1.exists()){
            f1.delete();
        }else {
            f1.createNewFile();//抛出异常
        }*/

        //5.创建目录
        /*//创建单层目录
        File f3 = new File("D:\\javatest\\a");
        f3.mkdir();*/
        //创建多层目录,如果目录是多层的,使用mkdir()方法无创建目录效果
        File f3 = new File("D:\\javatest\\a\\b\\c");
        f3.mkdirs();

        //6.遍历目录,先在目录下创建一些文件D:\javatest\a\aa.txt D:\javatest\a\b\bb.txt D:\javatest\a\b\c\cc.txt
        //1)list()方法可以遍历目录,返回的是String数组,于是创建一个String数组对象来接收
        String[] list = f3.list();
        for (String s:list){//for循环遍历list
            System.out.println(s);  //cc.txt,可以看到只能遍历出c目录里的文件。
        }

        //2)listFiles()方法也可以遍历目录,返回的是File类型的数组
        File[] files = f3.listFiles();
        for (File file:files){//对files对象进行遍历
            //对于files里面的每个对象,都是一个File类的对象,那么就可以调用File类的方法
            System.out.println(file.getName()+"\t"+file.getPath());
        }
        //7.删除目录
        //只有当目录为空的时候才能删除成功,且只会删除c目录
        f3.delete();    

    }
}

二、I/O流

1.定义

I/O:inpute/outpute  输入/输出流

流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。

可以形象的将流当做一根“管”,这根“管”连接着数据源和Java程序,而数据在“管”中传输

2.I/O流的分类

1)按数据流向分:输入流和输出流

2)按处理的数据类型分:字节流和字符流

3)按功能分:节点流(一根“管”处理流)和处理流(“管”套着“管”,也就是构造器嵌套)

3.流的表格

  字节流字符流
  输入流输出流输入流输出流
 抽象基类InputStreamOutputStreamReaderWriter
节点流访问文件FileInputStreamFileOutpuStreamFileReaderFileWriter
 访问数组ByteArrayInputStreamByteArrayOutputStreamCharArrayReaderCharArrayWriter
 访问管道PipedInputStreamPipedOutputStreamPipedReaderPipedWriter
 访问字符串  StringReaderStringWriter
处理流缓冲流BufferedInputStreamBufferedOutputStreamBufferedReaderBufferedWriter
 转换流  InputStreamReaderOutputStreamWriter
 对象流ObjectInputStreamObjectOutputStream  
  FilterInputStreamFilterOutputStreamFilterReaderFilterWriter
 数据流DataInputStreamDataOutputStream  
 打印流 PrintStream PrintWriter
 推回输入流PushbackInputStream PushbackReader 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值