gpt4 book ai didi

c# - 递归地将目录名称附加到字符串

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:33:04 24 4
gpt4 key购买 nike

我遇到了一个大问题,好吧,问题来了:我正在尝试从目录中获取文件信息,以便我可以将其列在 listview 上。当我使用该方法递归搜索文件时:

    private void Get_Files(string path)
{
DirectoryInfo di = new DirectoryInfo(path);

FileInfo[] fi = di.GetFiles();

foreach (FileInfo Info in fi)
{
try
{
Files.Add(Info.FullName);
}
catch(Exception ee)
{
MessageBox.Show(ee.Message);
}
}

foreach (DirectoryInfo DInfo in di.GetDirectories())
{
Get_Files(DInfo.FullName);
}
}

有时路径超过 260 个字符,所以我收到该错误:路径太长,不应超过 260 个字符,我在互联网上搜索过,人们说没有解决方案,但我自己想出了一个解决方案。解决方案:正在创建一个字符串并将路径的每个路径附加到该字符串,因此在将整个路径保存到字符串中时我永远不会遇到该错误。把它想象成把路径分开,把每一部分都附加到字符串上。所以这是我想出的解决方案:

    List<string> Files = new List<string>();

string completepath = string.Empty;
string current_dire_name = string.Empty;

private void Get_Files(string path)
{
DirectoryInfo di = new DirectoryInfo(path);

FileInfo[] fi = di.GetFiles();

foreach (FileInfo Info in fi)
{
try
{
completepath += "\\" + Info.Name;
Files.Add(completepath);
string remove_file_name = completepath;
remove_file_name = remove_file_name.Replace("\\" + Info.Name, "");
completepath = remove_file_name;
}
catch(Exception ee)
{
if(DialogResult.Yes == MessageBox.Show("Error at the Get_Files Method and Error message :\n\n" + ee.Message + "\n\nQuit Application now ?","",MessageBoxButtons.YesNo,MessageBoxIcon.Question))
{
Environment.Exit(0);
}
}
}

foreach (DirectoryInfo DInfo in di.GetDirectories())
{
string remove_folder_name = completepath;
remove_folder_name = remove_folder_name.Replace("\\" + current_dire_name, "");
completepath = remove_folder_name;

current_dire_name = DInfo.Name;
completepath += "\\" + DInfo.Name;
Get_Files(DInfo.FullName);
}
}

好吧,那个方法救了我,但它生成了错误的路径,我的意思是有些东西不正确,假设路径应该是:C:\Folder1\Folder2\Folder3\file.txt生成的路径是: C:\Folder1\file.txt ,类似的东西....我知道我做的方法有问题,尤其是递归追加。

我希望有人和我一起解决,这样人们就可以避免长路径异常。

最佳答案

您正在寻找 .Net Long Path library ,它使用 Windows API 的 \\?\ 前缀来完全避免限制。

关于c# - 递归地将目录名称附加到字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10673376/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com