标签: path

如何比较C#中的(目录)路径?

如果我有两个DirectoryInfo对象,我如何比较它们的语义相等?例如,以下路径应全部视为等于C:\temp:

  • C:\temp
  • C:\temp\
  • C:\temp\.
  • C:\temp\x\..\..\temp\.

以下可能等于或不等于C:\temp:

  • \temp 如果当前工作目录在驱动器上 C:\
  • temp 如果当前工作目录是 C:\
  • C:\temp.
  • C:\temp...\

如果考虑当前的工作目录很重要,我可以自己解决这个问题,所以这并不重要.尾随点在窗口中被剥离,因此这些路径确实应该相等 - 但它们不会在unix中被剥离,所以在mono下我会期望其他结果.

区分大小写是可选的.路径可能存在也可能不存在,用户可能拥有或可能没有路径权限 - 我更喜欢快速健壮的方法,不需要任何I/O(所以没有权限检查),但是如果有什么内置的话 - 我对任何"足够好"的东西都很满意......

.net c# filesystems path

70
推荐指数
5
解决办法
4万
查看次数

在OS X的路径上/ usr/bin之前有/ usr/local/bin是否有问题?

默认情况下,OS X 10.6用于/usr/libexec/path_helper添加文件中列出的以下路径/etc/paths:

/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin
Run Code Online (Sandbox Code Playgroud)

这意味着在路径/usr/bin之前/usr/local/bin.这导致的版本通过的Xcode 4的git安装/usr/bin被调用,而不是通过自制软件安装到的版本/usr/local/bin.

这引出了我的问题,是否有一个问题,/usr/local/bin来到/usr/bin路径前?是否有一个特定的原因,苹果默认/usr/bin以前来过/usr/local/bin

如何改变/usr/bin和的顺序/usr/local/bin

/usr/local/bin从文件底部移到/etc/paths顶部是一个问题吗?这样做会影响路径,而不仅仅是当我启动终端时,因为/usr/libexec/path_helper可以被其他资源使用(我不确定这一点).

虽然多余,但我似乎更安全地添加/usr/local/bin到路径中~/.bash_profile,这意味着/usr/local/bin将在路径上两次.

macos path

70
推荐指数
1
解决办法
1万
查看次数

Ruby有mkdir -p吗?

可能重复:
如何在ruby中递归创建目录?

在Ruby中,我该怎么做:

mkdir -p cool/beans
Run Code Online (Sandbox Code Playgroud)
  1. 这是我想出的:

    Dir.mkdir('cool') unless File.directory?('cool')
    cool_beans_path = File.join('cool', 'beans')
    Dir.mkdir(cool_beans_path) unless File.directory?(cool_beans_path)
    
    Run Code Online (Sandbox Code Playgroud)

    但是,有没有更好的方法?

  2. 我知道我能做到:

    system('mkdir', '-p', File.join('cool', 'beans'))
    
    Run Code Online (Sandbox Code Playgroud)

    但是,这不是平台独立的,是吗?比如,它适用于Mac但不适用于Windows,对吧?

ruby directory file path mkdir

70
推荐指数
1
解决办法
3万
查看次数

当我可能在子目录中时,如何找到本地git存储库的路径

我正在寻找git list-path打印相关存储库(.git目录)的路径之类的东西.

一点背景:我已经在我的很多项目/文件夹中设置了git版本控件.其中一些是嵌套的,因此一个带有echo自己的存储库的目录是另一个使用另一个存储库跟踪的目录的子文件夹.

例如,在我的主目录(~)中,我使用git来跟踪我的点文件,但在文件夹中,~/photo/meta-mix/我有另一个项目,我跟踪一个单独的存储库.现在,比方说,我已经在目录中设置了另一个项目 ~/photo/meta-match/,但我不知道它是否有自己的存储库.所以我想知道这个目录是否受版本控制,以及它的存储库在哪里.

如何使用git命令执行此操作?git status可以给我

nothing to commit
Run Code Online (Sandbox Code Playgroud)

这两种情况下,何时~/photo/meta-match/拥有自己的存储库或何时只是引用存储库~.

git environment path

70
推荐指数
1
解决办法
9万
查看次数

什么是"规范路径"?

这是一个理论问题.我在互联网上搜索没有令人满意的运气,我只想了解这个术语是什么.我已经看过Java,JSON等的例子但是我在谷歌或者StackOverflow中找不到一个简单的解释,没有代码需要= P

因此,绝对路径是一种到达某个文件或位置的方式,描述它的完整路径,完整路径,以及它依赖于操作系统(例如,Windows和Linux的绝对路径是不同的)相对路径它是一个路由到从当前位置描述的文件或位置..(两个点)表示目录树中的高级别.我已经清楚这几年了.

搜索时我甚至看到有规范化的文件!我所知道的就是"CANONICAL"意味着"根据规则"之类的东西.

有人可以请理解关于规范的理论吗?=)感谢!!

PD(所以它毕竟不仅仅是一个Ubuntu随机名称)XD

PD2可悲的是我不能给每个人答案,我把它给了帮助我最了解这个概念的那个,但是非常感谢每个人=)

theory path relative-path absolute-path

69
推荐指数
4
解决办法
5万
查看次数

如何获得wcf应用程序的工作路径?

我想获取WCF应用程序的工作文件夹.我怎么才能得到它?

如果我试试

HttpContext.Current.Request.MapPath(HttpContext.Current.Request.ApplicationPath)
Run Code Online (Sandbox Code Playgroud)

我得到一个空引用异常(Http.Current对象为null).


我对工作文件夹的意思是我的WCF服务正在运行的文件夹.如果我设置aspNetCompatibilityEnabled="true",我收到此错误:

服务器没有提供有意义的回复; 这可能是由于合同不匹配,过早的会话关闭或内部服务器错误造成的.

wcf path httpcontext

68
推荐指数
5
解决办法
9万
查看次数

WPF C#路径:如何从代码中的路径数据到几何的字符串(不在XAML中)

我想在Code中生成一个WPF Path对象.

在XAML中,我可以这样做:

 <Path Data="M 100,200 C 100,25 400,350 400,175 H 280">
Run Code Online (Sandbox Code Playgroud)

我怎样才能在Code中做同样的事情?

 Path path = new Path();
 Path.Data = "foo"; //This won't accept a string as path data.
Run Code Online (Sandbox Code Playgroud)

是否有可用将PathData转换为PathGeometry或类似字符串的类/方法?

当然不知何故XAML被解析并且数据字符串被转换了?

c# wpf path

68
推荐指数
2
解决办法
4万
查看次数

在文件路径中使用环境变量

我有一个指向特定文件夹的环境变量集(例如,称之为MYFOLDER).在%MYFOLDER%\SubFolderWindows资源管理器中键入时,将显示子文件夹.但是,当我SelectedPath = @"%MYFOLDER%\SubFolder";转到a时FolderBrowserDialog,它不起作用.

我尝试使用Path.GetFullPath(..),但这似乎返回可执行文件的bin文件夹(在VS中调试时),结尾是%MYFOLDER%,而不是我期望的路径.

任何人都知道如何正确使用环境变量?

c# path environment-variables folderbrowserdialog

68
推荐指数
1
解决办法
4万
查看次数

如何使用setx添加到Windows PATH变量?有奇怪的问题

我想使用修改Windows PATH变量setx.以下在Windows 8上至少有50%的时间可以正常工作:

setx PATH %PATH%;C:\Python27\;C:\Python27\Scripts\
Run Code Online (Sandbox Code Playgroud)

如果它给出错误"默认参数只能使用2次",那么下面的部分时间会起作用:

setx PATH "%PATH%;C:\Python27\;C:\Python27\Scripts\"
Run Code Online (Sandbox Code Playgroud)

不同之处在于我们将第二个参数包装在引号中.我相信%PATH%扩展包含空格时引号是必要的.

但是,我在Windows 7上遇到了一些奇怪的问题.在一台特定的Windows 7机器上,我遇到了这个问题:

echo %PATH%
Run Code Online (Sandbox Code Playgroud)

它打印:

C:\Foo\;C:\Bar\;[...lots of stuff...]C:\Baz\
Run Code Online (Sandbox Code Playgroud)

然后我这样做:

setx PATH "%PATH%;C:\Quux\"
Run Code Online (Sandbox Code Playgroud)

然后它说"错误:截断1,024个字符." 现在让我们检查一下PATH包含的内容:

echo %PATH%
Run Code Online (Sandbox Code Playgroud)

它打印:

C:\Foo\;C:\Foo\;C:\Bar\;C:\Bar\;[...lots of stuff, now duplicated...]C:\B
Run Code Online (Sandbox Code Playgroud)

......它被裁减为1,024个字符.由于重复,它跑了过来.同样有趣的是:尽管setx引发了错误而没有说"成功" ,但PATH的价值也发生了变化.

我能够多次重复这种奇怪的行为(幸运的是我保存了PATH的原始内容).

目前,我知道附加到PATH的唯一可靠方法如下:

  1. echo 路径.

  2. 将PATH的内容复制到文本文件中,然后手动添加;C:\Python27\;C:\Python27\Scripts\到PATH的末尾.

  3. 将整个事物复制出文本文件.

  4. setx PATH "<paste the string here>"

该过程在Windows 7和Windows 8上每次都有效.

我应该能够在一个命令中做到这一点.我究竟做错了什么?

谢谢.

windows cmd path setx

67
推荐指数
4
解决办法
14万
查看次数

如何使用Git Bash使用Windows网络路径

Windows中使用\\servername\share\path\to\folder语法表示网络资源的路径.如何在使用Unix风格路径的Git Bash中使用这样的文件夹?

windows path git-bash

67
推荐指数
3
解决办法
4万
查看次数