IO基础操作和常识

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

这些内容是常识:

1.目录结构:n×树
在这里插入图片描述

2.绝对路径:D:\profram\qq.exe
盘符 每个\分割的部分就是目录

3.相对路径(需要明确基准路径,工作路径)
设置基准路径是D:
./program/qq/Bin/qq.exe
基准路径不同,相对路径就不同

 ../返回上一级
 .当前目录
 /路径分割符

提示:以下是本篇文章正文内容,下面案例可供参考

一、文件是什么

狭义的文件

存储在硬盘上的数据,就是以文件为单位,进行组织
常见的就是普通文件(文本文件,图片,office系列,视频,音频,可执行程序)
文件夹也叫做目录也是一种特殊的文件

在这里插入图片描述

广义的文件

操作系统是要负责管理软件硬件资源,操作系统(linux)往往会把这些资源统一抽象成文件来进行管理
一切接文件

比如,有一个网卡,就把这个网卡抽象成一个文件,创建了特殊的文件,表示网卡,从网卡接受数据,就是读文件,发送数据,就是写文件
比如,有一个键盘,从键盘里读数据,就是把键盘抽象成文件,读这个文件就能读到用户输入的按键内容了

二、文件操作

就是操作系统层面提供的一些api
java.io.file(文件\目录)

使用库中的代码操作文件

在这里插入图片描述

/

 File f=new File("D:/test.txt"); 绝对路径
    File f=new File(("./test.txt"));相对路径

在这里插入图片描述
//注意此时演示的相对路径写法绝对路径大相径庭

        File f=new File(("./test.txt"));
        System.out.println(f.getParent());
        System.out.println(f.getName());
        System.out.println(f.getPath());//构造file对象时的路径
        System.out.println(f.getAbsolutePath());(区别就是多了个.表述当前目录)
        System.out.println(f.getCanonicalPath());

在这里插入图片描述
当前演示绝对路径:
在这里插入图片描述
在这里插入图片描述

  File f=new File("./test.txt");
        //判定文件是否存在
        System.out.println(f.exists());
        //判定文件是否是目录
        System.out.println(f.isDirectory());
        //判定文件是否是文件
        System.out.println(f.isFile());
        //把这个文件创建出来
        f.createNewFile();
        //判定文件是否存在
        System.out.println(f.exists());
        //判定文件是否是目录
        System.out.println(f.isDirectory());
        //判定文件是否是文件
        System.out.println(f.isFile());

在这里插入图片描述

在这里插入图片描述

File f=new File("./test.txt");
        f.delete();

在这里插入图片描述

        File f=new File("./testDir");
        String[]results=f.list();
        System.out.println(Arrays.toString(results));

在这里插入图片描述

File f=new File("./testDir");
        //创建单层目录
        f.mkdir();

        创建多层目录
        File f=new File("./testDir/aaa/bbb");
        f.mkdirs();

在这里插入图片描述

  //重命名
        File srcFile=new File("aaa.txt");
        File destFile=new File("BBB.txt");
        srcFile.renameTo(destFile);

三.文件内容的读写:数据流

在这里插入图片描述
java标准库中,在流的概念上,提供一组类,完成文件读写相关的操作

按照不同特点细分:
在这里插入图片描述

字节流

inputStream

在这里插入图片描述
读数据:把数据从硬盘读到内存中
第三个方法是把内容放到参数字节数组b中,参数b用来存放方法读到的结果(输出型参数

 InputStream inputStream=new FileInputStream("./bbb.txt");
        while(true){
            int b=inputStream.read();
            if(b==-1){
                break;
            }
            System.out.println(b);
        }
        inputStream.close();

    }

InputStream inputStream=new FileInputStream(“./bbb.txt”);
这个过程相当于打开文件,类似于foen,要想读写文件,就得先打开
记得关闭文件

读取结果:
在这里插入图片描述
每个英文字符,正好是一个字节,对应ascii表示

OutputStream

在这里插入图片描述

  OutputStream outputStream=new FileOutputStream("./bbb.txt");
        outputStream.write(97);
        outputStream.write(98);
        outputStream.write(99);
        outputStream.close();

使用OutputStream写文件的时候,只要打开文件成功,就会把文件原有的内容清空

在这里插入图片描述

字符流

读文件

 Reader reader=new FileReader("./bbb.txt");

read.方法和字节流inputStream差不多

在这里插入图片描述

   Reader reader=new FileReader("./bbb.txt");
        while(true){
            int ret=reader.read();
            if(ret==-1){
                break;
            }
            char ch=(char)ret;
            System.out.println(ch);
        }
        reader.close();

在这里插入图片描述

差别很明显,读取的是字符,字节流读取的是askii

写文件

类似output

  Writer writer=new FileWriter("./bbb.txt");
        writer.write("hello word");
        writer.close();

可穿字符串和字符数组
在这里插入图片描述
在这里插入图片描述

其他方法(简化操作)

读文件

Scanner

针对文本文件,使用字符流,还可以Scanner读取
Scanner构造方法里面传入要读取流对象,相当于给input之上套壳,后续从Scanner中读取

  InputStream inputStream=new FileInputStream("./bbb.txt");
        Scanner scanner=new Scanner(inputStream);
        while(scanner.hasNext()){
            System.out.println(scanner.next());
        }
        inputStream.close();

在这里插入图片描述

写文件

PrintWriter

针对写文本文件,也可以使用PrintWriter来简化开发
同上:


try(OutputStream outputStream=new FileOutputStream("./bbb.txt")){
     PrintWriter writer=new PrintWriter(outputStream);
        writer.println();
        writer.printf("a = %d\n",10);
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值