簡體   English   中英

C#中的相對路徑

[英]Relative path in c#

我一直在尋找直接或從完整路徑獲取相對目錄和文件路徑(兩者)的方法。 看來我找不到滿意的答案...而且我在Google上搜索了很多。

問題是我需要在FTP上上傳文件,並且需要格式“ Hostftp:port /” +“目錄/子目錄”來創建ftp請求

myftp:8008/Users
myftp:8008/Users/Data
myftp:8008/Users/Data/Anagraphics
myftp:8008/Work

等等等

我從計算機中選取文件,因此它們就像

C:\users\MyPc\UsersData\Users
C:\users\MyPc\UsersData\Users\Data
C:\users\MyPc\UsersData\Users\Data\Anagraphics
C:\users\MyPc\UsersData\Work

我希望他們像這樣列出

Users
Users\Data
Users\Data\Anagraphics
Work

所以我可以連接字符串並制作

myftp:8008/Users
myftp:8008/Users/Data
myftp:8008/Users/Data/Anagraphics
myftp:8008/Work

怎么做???

List<string> paths = new List<string>()
{
    @"C:\users\MyPc\UsersData\Users",
    @"C:\users\MyPc\UsersData\Users\Data",
    @"C:\users\MyPc\UsersData\Users\Data\Anagraphics",
    @"C:\users\MyPc\UsersData\Work"
};

var MatchingChars =
  from len in Enumerable.Range(0, paths.Min(s => s.Length)).Reverse()
  let possibleMatch = paths.First().Substring(0, len)
  where paths.All(f => f.StartsWith(possibleMatch))
  select possibleMatch;

var LongestDir = Path.GetDirectoryName(MatchingChars.First());
var ftpPaths = paths.Select(p=>Path.Combine("myftp:8008",p.Substring(LongestDir.Length +1)).Replace(@"\", "/"));

ftpPaths:

myftp:8008/Users 
myftp:8008/Users/Data 
myftp:8008/Users/Data/Anagraphics 
myftp:8008/Work 

為了從路徑列表中找到公用文件路徑,我使用了此問題的答案之一

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM