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

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

这里写图片描述

目录
相关文章
|
8月前
|
Python
Python代码扫描目录下的文件并获取路径
【5月更文挑战第12天】Python代码扫描目录下的文件并获取路径
148 1
|
缓存 前端开发
antd如何引入public(公共目录)下的文件
antd如何引入public(公共目录)下的文件
337 0
|
Java Spring
JAVA读取绝对路径文件和项目类路径下的文件的方法
JAVA读取绝对路径文件和项目类路径下的文件的方法
1733 0
|
Dart IDE 开发工具
Flutter工程解析(如何运行写初始化一个Dart文件)
解析 — Flutter工程解析(如何运行写初始化一个Dart文件) 这是一节小白必看的解析哦~,如果你了解过一点Flutter的写法可以跳过这节.
Flutter工程解析(如何运行写初始化一个Dart文件)
|
前端开发 JavaScript PHP
Yii2 使用AssetBundle中的$sourcePath对资源文件进引入和调用
Yii2 使用AssetBundle中的$sourcePath对资源文件进引入和调用
276 0
在ROS 中 功能包 中将类的函数定义 与 声明 分开 文件写 用main.cpp 调用 如何配置 CmakeList.txt
在ROS 中 功能包 中将类的函数定义 与 声明 分开 文件写 用main.cpp 调用 如何配置 CmakeList.txt
在ROS 中 功能包 中将类的函数定义  与 声明 分开 文件写  用main.cpp 调用  如何配置  CmakeList.txt
|
Go
Go基础:路径、文件名和包名的关系
Go基础:路径、文件名和包名的关系
779 0
Go基础:路径、文件名和包名的关系
|
存储 缓存 Dart
Dart 代码的组件集合Dart VM4
这是我参与8月更文挑战的第 9 天,活动详情查看:8月更文挑战。为应掘金的八月更文挑战, 未优化编译器分两遍生成机器代码: 1、「遍历函数体的序列化 AST 以生成函数体的控制流图( CFG ),CFG 由填充有中间语言( IL ) 指令的基本块组成」。在此阶段使用的 IL 指令类似于基于堆栈的虚拟机的指令:它们从堆栈中获取操作数,执行操作,然后将结果推送到同一堆栈。
145 0
|
编译器 C语言 计算机视觉
QtCreator里添加外部第三库、头文件路径的方法(.pro文件)
QtCreator里添加外部第三库、头文件路径的方法(.pro文件)
1025 0
QtCreator里添加外部第三库、头文件路径的方法(.pro文件)
|
Python
Python 技术篇-不使用os模块判断指定路径是文件还是文件夹,使用pathlib库判断文件和文件夹
Python 技术篇-不使用os模块判断指定路径是文件还是文件夹,使用pathlib库判断文件和文件夹
199 0
Python 技术篇-不使用os模块判断指定路径是文件还是文件夹,使用pathlib库判断文件和文件夹