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

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

这里写图片描述

目录
相关文章
|
Linux C++ Windows
code规范 --- 驼峰命名法
code规范 --- 驼峰命名法
1560 0
|
安全 Linux 测试技术
配置Goby工具环境(win,linux,macOS)
配置Goby工具环境(win,linux,macOS)
1949 2
|
关系型数据库 MySQL 数据库
百度搜索:蓝易云【【Docker】Docker部署Mysql并设置数据持久化教程】
通过以上步骤,您已经成功地在Docker中部署了MySQL,并设置了数据持久化,确保数据在容器重新启动或迁移时得以保留。
453 0
|
SQL 存储 弹性计算
阿里云EMR 2.0:重新定义新一代开源大数据平台
本次分享主要介绍了阿里云E-MapReduce的开发历程,EMR 2.0的新特性、产品架构,以及EMR 2.0在平台体验、数据开发、资源形态及分析场景等方面的全面突破与创新,重新定义新一代开源大数据平台。
3643 0
阿里云EMR 2.0:重新定义新一代开源大数据平台
|
9月前
|
机器学习/深度学习 人工智能 搜索推荐
当情绪也能被“量化”:数据如何悄悄改变心理健康分析与治疗
当情绪也能被“量化”:数据如何悄悄改变心理健康分析与治疗
911 14
|
10月前
|
数据采集 JSON 文字识别
图像与视频页面的数据提取
随着小红书、抖音等视觉平台崛起,传统采集难以应对图像视频内容。本文详解多模态采集架构:通过OCR识别图文、关键帧抽取视频信息,结合元数据融合,实现对视觉内容的精准理解与结构化提取,推动数据采集从“抓取”迈向“认知”。
679 7
|
5月前
|
人工智能 JSON 安全
生成式AI驱动的网络钓鱼攻击演进与防御范式重构研究
2025年,生成式AI使网络钓鱼迈入“分水岭”:83%钓鱼邮件含AI内容,点击率达54%,损失激增275%至700亿美元。攻击者利用LLM实现超个性化诱导、“无载荷”诈骗与多模态渗透,传统防御失效。本文基于Kaseya报告,解构AI钓鱼新范式,并提出以意图识别、对抗性AI和人因教育为核心的下一代防御框架。(239字)
258 0
|
10月前
|
小程序 搜索推荐 JavaScript
引入小程序平台对app有啥好处
引入小程序平台对app有啥好处
649 155
|
网络协议 网络安全
华为openEuler欧拉系统的防火墙常用设置方法
在有防火墙的系统中,比如我们部署了一个WEB项目,我们需要给该WEB项目所需的端口放行。本文介绍了防火墙常用设置方法。
2984 81
|
JSON 前端开发 Java
第05课:Spring Boot中的MVC支持
第05课:Spring Boot中的MVC支持
472 0