我有一个列表文件路径如下:
C:\Data\Default.aspx
C:\Data\Global.asax
C:\Data\Web.config
C:\Data\bin\PerlsComWebProject1.dll
C:\Data\bin\PerlsComWebProject1.pdb
我有一个从文件夹路径获取文件的方法,但是我想打印结果如下:
Data\Default
Data\Global
Data\Web.config
Data\bin\PerlsComWebProject1
Data\bin\PerlsComWebProject1
致电:GetFilePathWithOutExtention(@"C:\\Data");
我的代码只是没有扩展名的返回文件。
void GetFilePathWithOutExtention(string path)
{
string[] paths = Directory.GetFiles(path, "*.*", SearchOption.AllDirectories);
foreach(var path in paths)
{
Console.WriteLine(Path.GetFileNameWithoutExtension(path));
}
}
更新:感谢您的评论。 " C:\数据\"只是一个样本,抱歉让你困惑。实际上,我有一个任何文件夹,我想搜索这个文件夹,得到近似路径:这个文件夹... \文件名没有延伸。
例如:我有一条路径如下:D:\ EHO \ Phase1 \ Data \ Document \ text.txt,....当我调用方法时:GetFilePathWithOutExtention(" D:\ EHO \ Phase1&#34 ;),我想输出:Phase1 \ Data \ Document \ text,或GetFilePathWithOutExtention(" D:\ EHO \ Phase1 \ Data"),输出:Data \ Document \ text。
感谢。
答案 0 :(得分:1)
我认为您正在寻找的是Uri.MakeRelativeUri
所以你可以这样做:
var folder = new Uri(@"C:\Data");
var paths = System.IO.Directory.GetFiles(folder.LocalPath, "*.*", System.IO.SearchOption.AllDirectories);
foreach (var uri in paths.Select(p => new Uri(p)))
{
Console.WriteLine(folder.MakeRelativeUri(uri).ToString());
}
打印
Data/Default.aspx
Data/Global.asax
Data/Web.config
Data/bin/PerlsComWebProject1.dll
Data/bin/PerlsComWebProject1.pdb
答案 1 :(得分:0)
你可以从第4个字母中显示
void GetFilePathWithOutExtention(string path)
{
string[] filesName = Directory.GetFiles(path, "*.*", SearchOption.AllDirectories);
foreach(var fileName in filesName)
{
string pathToWrite = Path.GetFileNameWithoutExtension(fileName);
if(pathToWrite != null && pathToWrite.length >3 )
Console.WriteLine(pathToWrite.Substring(3,pathToWrite.length);
}
}
答案 2 :(得分:0)
一般答案,对机器驱动器内的所有文件夹都有效,而不仅仅是第一级:
void GetFilePathWithOutExtention(string path)
{
// Get the name of the folder containing your path (for further remove in the items folder)
string parentFolderName = Directory.GetParent(path).FullName;
string[] filePaths = Directory.GetFiles(path, "*.*", SearchOption.AllDirectories);
foreach(string fileItemPath in filePaths)
{
// Get the current folder without the initial folder path
string currentItemPath = Path.GetDirectoryName(fileItemPath).Remove(0, parentFolderName.Length);
Console.WriteLine(Path.Combine(currentItemPath, Path.GetFileNameWithoutExtension(fileItemPath)));
}
}