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

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

时间: 2025-01-07 14:40:02

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

HTML教程-文件之间的链接

教程|链接 超文本中的链接是其最重要的特性之一,使用者可以从一个页面直接跳转到其他的页面.图象或者服务器.一个链接的基本格式如下: <A HREF="资源地址">链接文字</A> ·标签<A>表示一个链接的开始,</A>表示链接的结束: ·属性"HREF"定义了这个链接所指的地方: ·通过点击"链接文字"可以到达指定的文件. <A HREF="http://www.sjstc.edu

包含文件对数据库链接的影响

链接|数据|数据库 你注意到没有,利用MX/UD开发程序时,所有需要链接数据库的页面中,都会在页面的开始部分使用包含文件调用数据库链接文件,如:<!--#include file="Connections/con123456.asp" --> 那么这段代码有什么好研究的吗?当然有研究了,如果你没有正确使用它,那么也许你在本地调试很正常的程序,一旦传到服务器上就出错,一个可能的原因就是包含文件在作怪!让我们了解一下什么是包含文件: ●包含文件 全称:Server_Side I

文件/目录权限设置命令chmod的详细用法

chmod是文件/目录权限设置的命令,在Linux中经常遇到,本博文以下总结chmod的详细用法.  Linux/Unix的档案调用权限分为三级,即档案拥有者user.群组group.其他other.u表示该档案的拥有者,g表示与该档案的拥有者属于同一个群体(group)者,o表示其他以外的人,a表示这三者皆是. + 表示增加权限.- 表示取消权限.= 表示唯一设定权限. r表示可读取,w表示可写入,x表示可执行.   举例说明: (1).将档案file1.txt 设为所有人皆可读取: chmo

Java压缩文件/目录成ZIP包最新技巧

使用java自带的类java.util.zip进行文件/目录的压缩的话,有一点不足,不支持中文的名件/目录命名,如果有中文名,那么打包就会失败.本人经过一段时间的摸索和实践,发现在一般的Ant.jar类库中也有zip类,import org.apache.tools.zip.*,能够解决不支持中文文件目录的问题,同时,Ant的获得途径也比较多,一般的应用服务器中有这个包,实在不行去下载个tomcat5.X,里面也有ant.jar,本人经过测试,可以使用. 例子如下: import java.io

linux:文件/目录权限设置

  一.权限修改命令: chmod [OPTION]... MODE[,MODE]... FILE... 二.文件/目录MODE指定方式: 1).八进制(r=4,w=2,x=1)[root@pinfun6 tmp]# ll filename -rwxrwxrwx 1 root root 0 Apr 15 14:37 filename [root@pinfun6 ~]# chmod 0755 filename [root@pinfun6 tmp]# ls -l filename -rwxr-xr-

visual studio-IIS发布网站未能写入输出文件...目录名称无效

问题描述 IIS发布网站未能写入输出文件...目录名称无效 VS里面运行是没问题的,但是发布到环境中,就报错如下: 百度过的方法如下: 以上方法均试过,还是不行.目录下没有这个dll,并且下载不到. 请教各位大神,如何处理.万分感谢 解决方案 解决方案:重新安装IIS 解决方案二: 紧急紧急,求助求助~~~ 解决方案三: CS0016: 未能写入输出文件--目录名无效CS0016: 未能写入输出文件--目录名无效网站 未能写入输出文件

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

创建目录 import 'dart:io'; main(List<String> arguments) { new Directory('dir/subdir').create(recursive: true) .then((Directory directory) { print(directory.path); }); } 执行后会在项目中新建目录 创建临时目录 import 'dart:io'; main(List<String> arguments) { Directory

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

创建文件 import 'dart:io'; main(List<String> arguments) { var systemTempDir = Directory.systemTemp; //在系统临时目录下创建两个目录一个文件 new File('${systemTempDir.path}/dir/subdir/file.txt').create(recursive: true) .then((file) { print(file.path); }); } 执行后看看系统临时目录下是否有

Nginx 防盗链(图片/文件/目录防盗链)

1.防盗链处理 通过REFERER判断  代码如下 复制代码 location ~ .*.(gif|jpg|jpeg|png|bmp|wma|mp3|swf)$ {       valid_referers none blocked server_names demo.hyzy120.com *.baidu.com:       if ($invalid_referer) {return 403;}     expires      30d; } #demo.hyzy120.com   允许的网