JAVA---File类和IO流

File类:(代表文件或者文件夹)
定义变量,数组,对象等方式都是将数据存储到内存之中的,断电是无法保存的

文件是存储在硬盘里面的,程序终止也不会丢失

File:只能对文件本身进行操作,不能读写文件里面存储的数据
创建的三种方法:
1.

 File file = new File("D:\\new\\a.txt");

用反斜杠的原因是防止产生\n的情况。
2.

 File file = new File("D:/new/a.txt");
  1. File会调用运行的系统上的方式
File file = new File("D:"+File.separator+"new"+File.separator+"a.txt");

常用的API:

		System.out.println(file.exists());
		//获得该文件是否存在
        System.out.println(file.length());
        //查看文件里面的大小
        System.out.println(file.isDirectory());
        //查看是否为文件夹
        System.out.println(file.getName());
        //查看该对象指向的文件的名字
        System.out.println(file.lastModified());
        //查看最后修改的时间
        System.out.println(file.getPath());
        //查看创建的时候的路径是什么
        System.out.println(file.getAbsoluteFile());
        //查看绝对路径

创建文件

		System.out.println(file.createNewFile());
		//创建文件
		 System.out.println(file.mkdirs());
		 //创建文件,只有一级
        System.out.println(file.mkdirs());
         //创建文件,多级的
          System.out.println(file.delete());
          //删除文件/文件夹,只能删除文件或空的文件夹

在这里插入图片描述

list()会获得字符串
listFiles()会获得文件对象

查询名字相同的文件

public  static  void search(File file,String name)
    {
        if(file == null||!file.exists()||file.isFile()){
            return;
        }
        File[] files = file.listFiles();
        if(files.length>0&&files!=null){
            for(File fil :files){
                if(fil.isFile()){
                    if(fil.getName().contains(name)){
                        System.out.println(fil.getAbsoluteFile());
                    }
                    else{
                        search(fil,name);
                    }
                }
            }
        }
    }

IO的使用需要在最后面关闭,否则会浪费资源
在这里插入图片描述

字节流的优点:文本的复制
缺点:读取中文文本容易出现乱码的问题。

在这里插入图片描述

读取性能差的问题:程序在内存中,而数据存储在硬盘中,每次调用都要用到硬件资源。

获得输入流:不断地将数据读入

 InputStream is = new FileInputStream("D:\\test\\a.txt");
    int  b;
        while ( (b=is.read())!=-1){
            System.out.println(b);
        }

一次读入多个字节

		 byte [] use = new byte[3];
        int i ;
        while ((i=is.read(use))!=-1)
        {
             s = new String(use);
            System.out.println(s);
        }

解决中文汉字乱码的问题方法:
1.定义一个数组直接接受文档里面的所有的内容
2.调用下面的方法,如果内容过大可能会溢出


        byte[]bytes = is.readAllBytes();
        System.out.println(new String(bytes));

在这里插入图片描述

获得输出流:
构造的时候可以不添加true,就会将内容覆盖点,加了true就会是添加的模式

		OutputStream outputStream = new FileOutputStream("D:\\test\\a.txt",true);

        outputStream.write('a');

        outputStream.close();

想使用换行用\r\n转换为字符数组来进行换行

文件复制

字符输出流的优化:在没有进行资源的刷新或者关闭的时候,会将写的数据存放到内存里面缓冲区,如果缓冲区已经装满了会自动刷新

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值