【发布时间】:2014-11-25 23:32:34
【问题描述】:
我一直在尝试找出一个解决方案来处理超出常规 Windows API 范围的非常长的文件路径,例如 System.IO.PathToLongException Problem。我阅读了答案MS Blog On Long Paths 中描述的博客,但是当使用该路径格式时,我仍然会遇到路径过长的异常。我做错了吗?
代码:
using System;
using System.Collections.Generic;
using System.IO;
using System.Diagnostics;
using System.Linq;
using System.Text;
namespace CreateTestDirForLongPaths
{
class Program
{
public static string MainFolder = @"L:\users\"insert username here"\desktop\LPTD";
public static bool Finished = false;
public static int FolderCounter = 0;
public static string PLD = @"L:\users\"insert username here"\desktop\LPTD\0";
public static string CName = Environment.MachineName.ToString();
public static string ComputerNamePre = @"\\" + CName + "\\";
static void Main(string[] args)
{
DirectoryInfo Source = new DirectoryInfo(MainFolder);
CreateTree(Source);
PLD = PLD.Substring(3, PLD.Length -4);
string LD = ComputerNamePre + @"L$" + "\\" + PLD + "\\" + "Folder Beyond reach";
try
{
Directory.CreateDirectory(LD);
}
catch(Exception e)
{
Console.WriteLine("End Error:" + "\n\n" + e.Message + "\n\n" + LD);
}
Console.WriteLine("\n\nFinished.");
Console.ReadKey(true);
}
static void CreateTree(DirectoryInfo directory)
{
try
{
MakeSubDirs(directory);
}
catch (IOException)
{
Finished = true;
}
}
static void MakeSubDirs(DirectoryInfo directory)
{
string CurrentDir = null;
try
{
string NewDir = directory.FullName + "\\" + FolderCounter.ToString();
CurrentDir = directory.FullName;
FolderCounter = ++FolderCounter;
PLD = PLD + "\\" + FolderCounter.ToString();
Directory.CreateDirectory(NewDir);
DirectoryInfo NextDir = new DirectoryInfo(NewDir);
CreateTree(NextDir);
}
catch (IOException)
{
Finished = true;
try
{
Process.Start(CurrentDir);
}
catch(Exception e)
{
Console.WriteLine("Start Error" + "\n\n" + e.Message + CurrentDir);
}
}
}
}
}
注意事项: 上面的应用程序是一个控制台应用程序,用于创建常规 Windows API 无法访问的文件夹,而无需使用 API 的 Unicode 版本来测试以不同方式在文件共享上修改文件夹的另一个应用程序。当它尝试使用 UNC 路径格式创建文件夹时,我在代码的第 26 行得到了 PathToLongException。任何帮助将不胜感激。
问题总结: 我需要一种方法来处理超过常规 Windows API 中文件夹的正常 248 个字符限制和文件的 260 个字符限制的路径。
【问题讨论】:
-
你能包括“错误线”吗?
-
@Leonel 发生错误的行还是错误本身?