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);
    });
}

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

这里写图片描述

目录
相关文章
|
3月前
|
Linux
【Linux 或Mac系统】自动生成项目结构目录并放在README.md文件中
如何在Linux或Mac系统中使用tree命令自动生成项目结构目录,并将其格式化后放入项目的README.md文件中以展示项目结构。
105 1
|
5月前
|
Android开发
Android Gradle开发—脚本实现自动打包后复制一份APK文件,并修改APK名称,到指定目录作备份
Android Gradle开发—脚本实现自动打包后复制一份APK文件,并修改APK名称,到指定目录作备份
299 0
|
C#
如何在 C# 项目中链接一个文件夹下的所有文件
在 C# 项目中通过链接方式引入文件可以让我们在项目中使用这些文件中的代码。常见的比如链接 AssemblyInfo.cs 文件,这样我们就可以在项目中使用这个文件中的版本号等信息。但是如果我们想要链接一个文件夹下的所有文件,该怎么做呢?今天我们就来看看如何在 C# 项目中链接一个文件夹下的所有文件。
127 0
如何在 C# 项目中链接一个文件夹下的所有文件
|
JavaScript Windows
XRename(文件文件夹超级重命名工具)简介
XRename(文件文件夹超级重命名工具)简介
185 0
XRename(文件文件夹超级重命名工具)简介
dirent--文件以及文件夹相关操作(跨平台)
dirent--文件以及文件夹相关操作(跨平台)
|
Java
使用代码把一个目录打包成jar
使用代码把一个目录打包成jar
141 0
编译编译时,用不到的库,一定不要链接
编译编译时,用不到的库,一定不要链接
103 0
python 如何实现删除指定文件夹下的指定后缀名文件
python 如何实现删除指定文件夹下的指定后缀名文件
|
缓存 JavaScript 前端开发
nodejs给文件链接添加md5
在开发的时候,经常会有css js 文件的变更,然后部署后发现没有起到作用,最终发现是缓存的问题,如何来方便的解决
nodejs给文件链接添加md5
|
安全 Android开发
【Android 逆向】APK 文件处理脚本 ApkTool.py ( 脚本简介 | 用法 | 分析 APK 文件 )(一)
【Android 逆向】APK 文件处理脚本 ApkTool.py ( 脚本简介 | 用法 | 分析 APK 文件 )(一)
224 0
【Android 逆向】APK 文件处理脚本 ApkTool.py ( 脚本简介 | 用法 | 分析 APK 文件 )(一)