Dart的路径操作

简介: <div class="markdown_views"><h2 id="路径连接">路径连接</h2><pre class="prettyprint"><code class=" hljs lasso"><span class="hljs-keyword">import</span> <span class="hljs-string">'package:path/path

路径连接

import 'package:path/path.dart' as path;

main(List<String> arguments) {
  //将现有的两个路径连接
  var newPath = path.join('/Users/shailen', 'dart/projects');
  print(newPath);
}

输出有个问题,因为不同平台的路径分隔符是不同的,这个问题后面会解决

这里写图片描述

解析路径

import 'package:path/path.dart' as path;

main(List<String> arguments) {
  print(path.split('/Users/shailen'));
  print(path.split(r'C:\tempdir\tmp.txt'));
}

输出效果如下

这里写图片描述

计算相对路径

import 'dart:io' show Directory;
import 'package:path/path.dart' as path;

main(List<String> arguments) {
  //从当前目录到系统临时目录的路径
  print(path.relative(Directory.systemTemp.path));

  //使用相对路径
  var path1 = 'docs/book.html';
  var path2 = 'articles/list';
  print(path.relative(path1, from: path2));
  print(path.relative(path2, from: path1));

  //使用绝对路径
  var samples = 'http://www.dartlang.org/samples';
  var docs = 'http://www.dartlang.org/docs';
  print(path.relative(samples, from: docs));
  print(path.relative(docs, from: samples));
}

输出效果如下

这里写图片描述

URI和路径的转换

import 'package:path/path.dart' as path;

main(List<String> arguments) {
  var uri = path.toUri('http://dartlang.org/samples');
  print(path.fromUri(uri));
}

输出效果如下

这里写图片描述

路径文件的信息

import 'package:path/path.dart' as path;
import 'dart:io';

main(List<String> arguments) {
  new File('${Directory.systemTemp.path}/dir/myFile.txt').create(recursive: true)
    .then((file) {
      //获取完整文件名
      print(path.basename(file.path));
      //获取文件目录
      print(path.dirname(file.path));
      //获取文件名
      print(path.basenameWithoutExtension(file.path));
      //获取文件扩展名
      print(path.extension(file.path));
    });
}

输出效果如下

这里写图片描述

平台的路径分隔符

import 'dart:io' show Platform;
import 'package:path/path.dart' as path;

main(List<String> arguments) {
  //下面两种方法都能得到当前平台的路径分隔符
  print(Platform.pathSeparator);
  print(path.separator);
}

这个方法就能解决第一个例子的问题,输出如下

这里写图片描述

目录
相关文章
|
3月前
|
JavaScript API Windows
Nodejs 文件 与 路径 相关用法实例解析
Nodejs 文件 与 路径 相关用法实例解析
75 0
|
7月前
|
Android开发
qt创建第一个安卓项目
qt创建第一个安卓项目
59 0
|
Dart IDE 开发工具
Flutter工程解析(如何运行写初始化一个Dart文件)
解析 — Flutter工程解析(如何运行写初始化一个Dart文件) 这是一节小白必看的解析哦~,如果你了解过一点Flutter的写法可以跳过这节.
Flutter工程解析(如何运行写初始化一个Dart文件)
|
Dart Java 编译器
Dart 代码的组件集合Dart VM
这是我参与8月更文挑战的第 6 天,活动详情查看:8月更文挑战。为应掘金的八月更文挑战, 本文主要介绍本地执行 Dart 代码的组件集合Dart VM
103 0
|
缓存 Dart 编译器
Dart 代码的组件集合Dart VM2
这是我参与8月更文挑战的第 7 天,活动详情查看:8月更文挑战。为应掘金的八月更文挑战, Dart 代码的组件集合Dart VM 2
165 1
|
Dart 前端开发 编译器
Dart 代码的组件集合Dart VM3
这是我参与8月更文挑战的第 8 天,活动详情查看:8月更文挑战。为应掘金的八月更文挑战, 通过 JIT 运行源代码 本节将介绍当从命令行执行 Dart 时会发生什么:
138 0
|
存储 缓存 Dart
Dart 代码的组件集合Dart VM4
这是我参与8月更文挑战的第 9 天,活动详情查看:8月更文挑战。为应掘金的八月更文挑战, 未优化编译器分两遍生成机器代码: 1、「遍历函数体的序列化 AST 以生成函数体的控制流图( CFG ),CFG 由填充有中间语言( IL ) 指令的基本块组成」。在此阶段使用的 IL 指令类似于基于堆栈的虚拟机的指令:它们从堆栈中获取操作数,执行操作,然后将结果推送到同一堆栈。
120 0
|
开发工具 Android开发
AndroidStudio创建第一个 Flutter 应用程序
AndroidStudio创建第一个 Flutter 应用程序: 转到文件->新建flutter项目。
138 0
AndroidStudio创建第一个 Flutter 应用程序
|
Python
Python 技术篇-不使用os模块判断指定路径是文件还是文件夹,使用pathlib库判断文件和文件夹
Python 技术篇-不使用os模块判断指定路径是文件还是文件夹,使用pathlib库判断文件和文件夹
164 0
Python 技术篇-不使用os模块判断指定路径是文件还是文件夹,使用pathlib库判断文件和文件夹
|
Python
Python 技术篇 - 利用os库实现读取遍历指定路径的文件,区分文件和文件夹
Python 技术篇 - 利用os库实现读取遍历指定路径的文件,区分文件和文件夹
257 0
Python 技术篇 - 利用os库实现读取遍历指定路径的文件,区分文件和文件夹