热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Dart:path库

path库pub地址安装:dependencies:path:使用:importdart:io;importpackage:pathpath.dart

path库pub地址

安装:

dependencies:path:

使用:

import 'dart:io';
import 'package:path/path.dart' as path;main(List args) async {print(Directory.current.path); // D:\ajanuw\dart-test print(path.joinAll([Directory.current.path, 'bin', 'main.dart'])); // 拼接一个路径:D:\ajanuw\dart-test\bin\main.dartString __filename = Platform.script.path.replaceFirst('/', ''); // 脚本路径:D:/ajanuw/dart-test/bin/main.dartString __dirname = path.dirname(__filename); // 脚本目录:D:/ajanuw/dart-test/binprint(__filename);print(__dirname);String a = path.joinAll([__dirname, '..', 'test', 'dart_test_test.dart']); // 拼接路径:D:/ajanuw/dart-test/bin\..\test\dart_test_test.dartprint(a);print(await File(a).exists()); // 文件是否存在
}

执行:

D:\ajanuw\dart-test>dart ./bin/main.dart
D:\ajanuw\dart-test
D:\ajanuw\dart-test\bin\main.dart
D:/ajanuw/dart-test/bin/main.dart
D:/ajanuw/dart-test/bin
D:/ajanuw/dart-test/bin\..\test\dart_test_test.dart
true

D:/ajanuw/dart-test/bin\..\test\dart_test_test.dart 虽然这个路径的分隔符乱七八糟的但还是能够找到呢!

规范化[path]

String p = 'D:/ajanuw/dart-test/bin\\..\\test\\dart_test_test.dart';print(p);print(path.normalize(p)); // 尽可能删除冗余路径分隔符print(path.canonicalize(p)); // 规范化

basename

path.basename('path/to/'); // -> 'to'
path.basename('path/to/a.txt') // -> a.txt
path.basenameWithoutExtension('path/to/a.txt') // -> a,获取最后一个分隔符之后的[path]部分,没有任何后缀

extension

获取[path]的文件扩展名:[basename]的最后一部分, 包括.本身

path.extension('path/to/a.txt') // -> .txt

rootPrefix

返回[path]的根,如果它是绝对的, 如果它是相对的返回空字符串

/// // Unix
/// p.rootPrefix('path/to/foo'); // -> ''
/// p.rootPrefix('/path/to/foo'); // -> '/'
///
/// // Windows
/// p.rootPrefix(r'path\to\foo'); // -> ''
/// p.rootPrefix(r'C:\path\to\foo'); // -> r'C:\'
///
/// // URL
/// p.rootPrefix('path/to/foo'); // -> ''
/// p.rootPrefix('http://dartlang.org/path/to/foo');
/// // -> 'http://dartlang.org'

split

使用当前平台的[separator]将[path]拆分为其组件

/// p.split('path/to/foo'); // -> ['path', 'to', 'foo']
///
/// 在分割之前,路径将不被标准化
///
/// p.split('path/../foo'); // -> ['path', '..', 'foo']
///
/// 如果[path]是绝对的,则根目录将是该目录中的第一个元素
/// array. Example:
///
/// // Unix
/// p.split('/path/to/foo'); // -> ['/', 'path', 'to', 'foo']
///
/// // Windows
/// p.split(r'C:\path\to\foo'); // -> [r'C:\', 'path', 'to', 'foo']
///
/// // Browser
/// p.split('http://dartlang.org/path/to/foo');
/// // -> ['http://dartlang.org', 'path', 'to', 'foo']

relative

尝试将[path]转换为当前的等效相对路径

/// // Given current directory is /root/path:
/// p.relative('/root/path/a/b.dart'); // -> 'a/b.dart'
/// p.relative('/root/other.dart'); // -> '../other.dart'
///
/// If the [from] argument is passed, [path] is made relative to that instead.
///
/// p.relative('/root/path/a/b.dart', from: '/root/path'); // -> 'a/b.dart'
/// p.relative('/root/other.dart', from: '/root/path');
/// // -> '../other.dart'
///
/// If [path] and/or [from] are relative paths, they are assumed to be relative
/// to the current directory.
///
/// Since there is no relative path from one drive letter to another on Windows,
/// or from one hostname to another for URLs, this will return an absolute path
/// in those cases.
///
/// // Windows
/// p.relative(r'D:\other', from: r'C:\home'); // -> 'D:\other'
///
/// // URL
/// p.relative('http://dartlang.org', from: 'http://pub.dartlang.org');
/// // -> 'http://dartlang.org'print(path.relative(Platform.script.path.replaceFirst('/', '')));
ajanuw@ajanuw /d/ajanuw/dart-test
λ dart bin/main.dart
bin\main.dart

isWithin(String parent, String child)

如果[child]是“parent”下面的路径,则返回“true”,否则返回“false”

p.isWithin('/root/path', '/root/path/a'); // -> true
p.isWithin('/root/path', '/root/other'); // -> false
p.isWithin('/root/path', '/root/path') // -> false

equals(String path1, String path2)

如果[path1]指向与[path2]相同的位置,则返回“true”,否则false

path.equals('a/b', 'a/b') -> true

withoutExtension

从[path]的最后一部分删除尾随扩展名

p.withoutExtension('path/to/foo.dart'); // -> 'path/to/foo'

setExtension

返回[path],尾随扩展名设置为[extension]

p.setExtension('path/to/foo.dart', '.js') // -> 'path/to/foo.js'
p.setExtension('path/to/foo.dart.js', '.map') // -> 'path/to/foo.dart.map'
p.setExtension('path/to/foo', '.js') // -> 'path/to/foo.js'

fromUri

返回[uri]表示的路径,可以是[String]或[Uri]

// POSIX
p.fromUri('file:///path/to/foo') // -> '/path/to/foo'// Windows
p.fromUri('file:///C:/path/to/foo') // -> r'C:\path\to\foo'// URL
p.fromUri('http://dartlang.org/path/to/foo') // -> 'http://dartlang.org/path/to/foo'// 相对路径返回相对路径
p.fromUri('path/to/foo'); // -> 'path/to/foo'

prettyUri

返回[uri]的简洁,人类可读的表示

print(path.relative('d:/ajanuw/dart-test/a/b.dart'));print(path.prettyUri('file:///d:/ajanuw/dart-test/a/b.dart'));ajanuw@ajanuw /d/ajanuw/dart-test
λ dart bin/main.dart
a\b.dart
a\b.dart

bool isAbsolute(String path) 如果[path]是相对路径则返回“true”,如果是绝对路径则返回“false”
bool isRelative(String path) 如果[path]是根相对路径则返回“true”,如果不是,则返回“false”
bool isRootRelative(String path) 没看懂干啥的
Uri toUri(String path) Uri.parse
p.separator 获取当前平台的路径分隔符。 `\` 这是Windows上的
p.current 返回工作路径
p.absolute('a', 'b') p.current+a/b

转:https://www.cnblogs.com/ajanuw/p/10916886.html



推荐阅读
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • Linux下安装免费杀毒软件ClamAV及使用方法
    本文介绍了在Linux系统下安装免费杀毒软件ClamAV的方法,并提供了使用该软件更新病毒库和进行病毒扫描的指令参数。同时还提供了官方安装文档和下载地址。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • Windows 7 部署工具DISM学习(二)添加补丁的步骤详解
    本文详细介绍了在Windows 7系统中使用部署工具DISM添加补丁的步骤。首先需要将光驱中的安装文件复制到指定文件夹,并进行挂载。然后将需要的MSU补丁解压并集成到系统中。文章给出了具体的命令和操作步骤,帮助读者完成补丁的添加过程。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
  • Java自带的观察者模式及实现方法详解
    本文介绍了Java自带的观察者模式,包括Observer和Observable对象的定义和使用方法。通过添加观察者和设置内部标志位,当被观察者中的事件发生变化时,通知观察者对象并执行相应的操作。实现观察者模式非常简单,只需继承Observable类和实现Observer接口即可。详情请参考Java官方api文档。 ... [详细]
  • Spring学习(4):Spring管理对象之间的关联关系
    本文是关于Spring学习的第四篇文章,讲述了Spring框架中管理对象之间的关联关系。文章介绍了MessageService类和MessagePrinter类的实现,并解释了它们之间的关联关系。通过学习本文,读者可以了解Spring框架中对象之间的关联关系的概念和实现方式。 ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
  • Android系统源码分析Zygote和SystemServer启动过程详解
    本文详细解析了Android系统源码中Zygote和SystemServer的启动过程。首先介绍了系统framework层启动的内容,帮助理解四大组件的启动和管理过程。接着介绍了AMS、PMS等系统服务的作用和调用方式。然后详细分析了Zygote的启动过程,解释了Zygote在Android启动过程中的决定作用。最后通过时序图展示了整个过程。 ... [详细]
author-avatar
宜宾开心花行
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有