Dart的文件、目录和链接(1)

系统临时目录

在进入正题之前先科普一下什么是“系统临时目录”,顾名思义就是装临时文件用的,通常位于C:\Documents and Settings\用户名(一般为Administrator)\Local Settings\Temp目录下(默认为隐藏目录),此文件夹是用户应用的软件(如,winword)转储临时文件的地方,目的在于临时调用与写入。

  1. 安装程序时:
    安装程序时,安装程序会将压缩包内的文件全部释放到此文件夹中,然后再提取,若重装系统进行的是覆盖安装,很容易出现“找不到文件……setup.exe。检查确定路径和文件名都正确而且所需库都能用”的“无法运行16位windows程序”的对话框。
  2. 运行程序时:
    若程序的临时文件没建立成功,一般的程序设计员会使程序运行报错,无法运行程序。

用Dart里查询系统临时目录的代码如下

import 'dart:io';

main(List<String> arguments) {
  //获取系统临时目录
  var systemTempDir = Directory.systemTemp;
  print(systemTempDir.path);
}

这样控制台就会输出本机的系统临时目录地址

这里写图片描述

删除一个文件、目录或链接

import 'dart:io';

main(List<String> arguments) {
  //在系统临时目录下创建文件
  Directory.systemTemp.createTemp('my_temp_dir')
    .then((directory) {
      //检查文件是否存在
      directory.exists().then(print);
      //删除文件
      return directory.delete();
    })
    .then((directory) {
      //再次检查文件是否存在
      directory.exists().then(print);
    });
}

执行你会发现系统临时目录下没有刚刚创建的文件,因为文件刚创建就被删除了

这里写图片描述

先输出true证明创建成功,后输出false证明删除成功。(匆匆的你走了,正如你匆匆的来)

重命名一个文件、目录或链接

import 'dart:io';

main(List<String> arguments) {
  //获得系统临时目录
  var systemTempDir = Directory.systemTemp;
  //创建一个文件
  new File('${systemTempDir.path}/foo.txt').create()
    .then((file) {
      print('文件的路径在${file.path}');
      //重命名文件
      return file.rename('${systemTempDir.path}/bar.txt');
    })
    .then((file) {
      print('文件的路径在${file.path}');
    });
}

先新建一个文件foo.txt,然后再重命名为bar.txt,控制台输出如下

这里写图片描述

通过路径可以看出重命名成功了,然后再看看最终的bar.txt是否真的存在

这里写图片描述

刚刚创建并重命名的文件是存在的,没问题

查看文件对象的类型

import 'dart:io';

main(List<String> arguments) {
  //系统临时目录的列表
  Directory.systemTemp.list(recursive:true,followLinks: false)
    //读取每一个文件对象
    .listen((FileSystemEntity entity) {
      //查看文件对象的类型和路径
      FileSystemEntity.type(entity.path)
        .then((FileSystemEntityType type) {
          String label;
          //判断文件类型
          switch (type) {
            case FileSystemEntityType.DIRECTORY:
              label = '目录';
              break;
            case FileSystemEntityType.FILE:
              label = '文件';
              break;
            case FileSystemEntityType.LINK:
              label = '链接';
              break;
            default:
              label = '未知';
          }
          //输出文件类型与路径
          print('$label:${entity.path}');
        });
    });
}

输出系统临时目录下的所有文件及其类型

这里写图片描述

成功按要求输出了所有文件

获取父目录

import 'dart:io';

main(List<String> arguments) {
  Directory.systemTemp.list(recursive: true, followLinks: false)
    .listen((FileSystemEntity entity) {
      //输出文件对象的父路径
      print(entity.parent.path);
    });
}

输出系统临时目录里所有文件的父目录

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值