它们是相同的还是彼此的替代品?是否有任何一个被弃用,如果是这样的话?建议在ASP.NET Web应用程序中使用哪一个.我的目标是递归地从特定目录中提取所有文件.
dotNet中是否存在DirectoryInfo.GetFiles/Directory.GetDirectories的异步版本?我想在F#异步块中使用它们,并且拥有一个可以使用AsyncCallbacks调用的版本会很好.
问题是我试图吮吸一堆目录,可能是在慢速网络连接上的SMB挂载上,我不希望一堆线程池线程在等待网络读取时可能正在做其他工作.
我遇到了一些奇怪的行为,试图获取以某个字符串开头的文件.
请有人就此提供一个有效的例子:
我想获取一个以某个字符串开头的目录中的所有文件,但也包含xml扩展名.
例如:
apples_01.xml
apples_02.xml
pears_03.xml
Run Code Online (Sandbox Code Playgroud)
我希望能够获得以苹果开头的文件.
到目前为止,我有这个代码
DirectoryInfo taskDirectory = new DirectoryInfo(this.taskDirectoryPath);
FileInfo[] taskFiles = taskDirectory.GetFiles("*.xml");
Run Code Online (Sandbox Code Playgroud) 在C#中编写一些代码,我想知道是否有办法获取directoryinfo对象的正确路径?
例如,目前我有一个目录,例如:
DirectoryInfo dirInfo = new DirectoryInfo(pathToDirectory);
Run Code Online (Sandbox Code Playgroud)
问题是,如果我想获取该特定dirInfo对象的路径,它总是返回调试路径(bin文件夹).如果原始dirInfo对象引用D:\testDirectory路径中的目录,那么我想要一种方法在代码中的其他位置再次获取该路径而不是获取\bin\debug\testDirectory
有没有办法做到这一点?
目前我正在尝试使用以下方式获取dirInfo的路径Path:
Console.WriteLine("Path: " + Path.GetFullPath(dirInfo.ToString()));
Run Code Online (Sandbox Code Playgroud) 我需要通过计算机上的各种目录(通过DirectoryInfo).其中一些不可访问,并发生UnauthorizedAccessException.如何在不捕获异常的情况下检查目录访问?
如果我想使用UNC路径实例化DirectoryInfo对象
DirectoryInfo myDI = new DirectoryInfo (@"\\server\share");
Run Code Online (Sandbox Code Playgroud)
如何传递访问该共享所需的用户名/密码?
谢谢
当我递归一些文件夹和文件时,我遇到这个错误:
指定的路径,文件名或两者都太长.完全限定的文件名必须少于260个字符,目录名必须少于248个字符.
这是我的功能
private void ProcessDirectory(DirectoryInfo di)
{
try
{
DirectoryInfo[] diArr = di.GetDirectories();
foreach (DirectoryInfo directoryInfo in diArr)
{
if (StopCheck)
return;
ProcessDirectory(directoryInfo);
}
ProcessFile(di);
}
catch (Exception e)
{
listBoxError.Items.Add(e.Message);
}
TextBoxCurrentFolder.Text = di.ToString();
}
Run Code Online (Sandbox Code Playgroud)
我不能让目录名更短,因为我不允许这样......我怎么能解决这个问题呢?
补充: 这是另一个功能:
private void ProcessFile(DirectoryInfo di)
{
try
{
FileInfo[] fileInfo = di.GetFiles();
if (fileInfo.LongLength != 0)
{
foreach (FileInfo info in fileInfo)
{
Size += info.Length;
CountFile++;
}
}
}
catch (Exception e)
{
listBoxError.Items.Add(e.Message);
}
}
Run Code Online (Sandbox Code Playgroud)
EDIT 在他使用Zeta Long Paths的地方找到了这个: …
可能重复:
.NET - 检查目录是否可访问而不进行异常处理
我使用.NET 3.5和C#在Visual Studio 2010中制作一个小文件浏览器,我有这个功能来检查目录是否可访问:
RealPath=@"c:\System Volume Information";
public bool IsAccessible()
{
//get directory info
DirectoryInfo realpath = new DirectoryInfo(RealPath);
try
{
//if GetDirectories works then is accessible
realpath.GetDirectories();
return true;
}
catch (Exception)
{
//if exception is not accesible
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
但我认为对于大目录,尝试让所有子目录检查目录是否可访问可能会很慢.我在尝试探索受保护的文件夹或没有光盘的cd/dvd驱动器时使用此功能来防止错误("设备未就绪"错误).
是否有更好的方法(更快)检查应用程序是否可以访问目录(最好是在NET 3.5中)?
我在这段代码的第三行有一个例外"第二个路径片段不能是驱动器或UNC名称"
DirectoryInfo labdi = new DirectoryInfo(Back.mainfolderpath + @"\news\l");
DirectoryInfo tld = new DirectoryInfo(labdi.FullName + @"\" + NorA.sn.labl[i]);
tld = labdi.CreateSubdirectory(labdi.FullName + @"\" + NorA.sn.labl[i] + @"\");
Run Code Online (Sandbox Code Playgroud)
网上没有有用的方法.谢谢.:!
directoryinfo ×10
c# ×8
.net ×5
directory ×2
asp.net ×1
asynchronous ×1
f# ×1
fileinfo ×1
subdirectory ×1
unc ×1