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

简介: <div class="markdown_views"><h2 id="系统临时目录">系统临时目录</h2><p>在进入正题之前先科普一下什么是“系统临时目录”,顾名思义就是装临时文件用的,通常位于C:\Documents and Settings\用户名(一般为Administrator)\Local Settings\Temp目录下(默认为隐藏目录),此文件夹是用户

系统临时目录

在进入正题之前先科普一下什么是“系统临时目录”,顾名思义就是装临时文件用的,通常位于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);
    });
}

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

这里写图片描述

目录
相关文章
|
2月前
|
开发框架 前端开发 算法
【Qt App 编译 】Qt Cmake 资源文件的加载:如何使用 CMakeLists.txt 文件和资源文件
【Qt App 编译 】Qt Cmake 资源文件的加载:如何使用 CMakeLists.txt 文件和资源文件
41 0
|
4月前
|
存储 JSON 测试技术
Cypress默认文件结构
Cypress默认文件结构
|
11月前
|
机器学习/深度学习 传感器 运维
完整代码目录
完整代码目录
700 0
|
C#
如何在 C# 项目中链接一个文件夹下的所有文件
在 C# 项目中通过链接方式引入文件可以让我们在项目中使用这些文件中的代码。常见的比如链接 AssemblyInfo.cs 文件,这样我们就可以在项目中使用这个文件中的版本号等信息。但是如果我们想要链接一个文件夹下的所有文件,该怎么做呢?今天我们就来看看如何在 C# 项目中链接一个文件夹下的所有文件。
103 0
如何在 C# 项目中链接一个文件夹下的所有文件
dirent--文件以及文件夹相关操作(跨平台)
dirent--文件以及文件夹相关操作(跨平台)
|
Java Android开发
eclipse目录改名,子目录及JAVA文件同步更改
eclipse目录改名,子目录及JAVA文件同步更改
66 0
eclipse目录改名,子目录及JAVA文件同步更改
编译编译时,用不到的库,一定不要链接
编译编译时,用不到的库,一定不要链接
90 0
|
JavaScript Windows
XRename(文件文件夹超级重命名工具)简介
XRename(文件文件夹超级重命名工具)简介
150 0
XRename(文件文件夹超级重命名工具)简介
python 如何实现删除指定文件夹下的指定后缀名文件
python 如何实现删除指定文件夹下的指定后缀名文件
|
Python
Python编程:pycharm同级目录导入模块报错问题
Python编程:pycharm同级目录导入模块报错问题
173 0