相关疑难解决方法(0)

C#中的File和FileInfo有什么区别?

我一直在读的静态方法文件类最好是用在像检查,看看是否存在对文件执行小一些任务,我们应该使用的实例FileInfo的,如果我们要进行很多类对特定文件的操作.

我理解这一点,可以盲目地使用它,但我想知道为什么会有区别?它们的工作方式是什么使它们适合不同的情况?让这2个不同的类看起来以不同的方式做同样的事情有什么意义呢?

如果有人能够至少回答其中一个问题,将会很有帮助.

c# file

66
推荐指数
3
解决办法
3万
查看次数

如何删除特定文件夹中的所有文件?

我在运行时将文件保存在特定文件夹中.过了一段时间,我想以编程方式删除它们.如何删除特定文件夹中的所有文件?

.net c#

59
推荐指数
4
解决办法
13万
查看次数

尝试以编程方式删除文件夹时"目录不为空"错误

在我的应用程序中,我构建了一个用户可以创建图片库的系统.在磁盘上以category_name/gallery_name/{pictures}格式保存在文件夹中的照片.每张上传的照片都存储在上面给出的相关目录结构下.

当尝试删除类别,以及从数据库中删除时,我也想删除系统中的相关文件夹.当我第一次收到错误消息"目录不为空"时,我搜索并找到了这个解决方案:

public static void DeleteDirectory(string target_dir)
    {
        string[] files = Directory.GetFiles(target_dir);
        string[] dirs = Directory.GetDirectories(target_dir);

        foreach (string file in files)
        {
            File.SetAttributes(file, FileAttributes.Normal);
            File.Delete(file);
        }

        foreach (string dir in dirs)
        {
            DeleteDirectory(dir);
        }

        Directory.Delete(target_dir, false);
    }
Run Code Online (Sandbox Code Playgroud)

使用此解决方案,"gallery_name"文件夹中的照片被删除就好了,然后gallery_name文件夹本身被删除了.所以我们现在留下一个空的category_name文件夹.然后调用上面子例程(Directory.Delete(target_dir, false);)中的最后一部分代码来删除category_name文件夹.错误再次引发..

有谁知道解决这个问题?

  1. Directory.Delete(target_dir, true); 没用,这就是我尝试替代方案的原因.
  2. 我可以完全控制父文件夹,也可以通过编程方式创建category_name和gallery_name文件夹,没有任何问题.
  3. 正如我所提到的,使用此代码删除子目录(gallery_name文件夹)及其内容(照片)就好了.它是category_name文件夹导致错误,即使在此代码之后,它只是一个空文件夹.

我得到的异常消息是:

System.IO.IOException was unhandled by user code
  HResult=-2147024751
  Message=The directory is not empty.

  Source=mscorlib
  StackTrace:
       at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
       at System.IO.Directory.DeleteHelper(String fullPath, String userPath, Boolean recursive, Boolean throwOnTopLevelDirectoryNotFound)
       at System.IO.Directory.Delete(String …
Run Code Online (Sandbox Code Playgroud)

c# asp.net

32
推荐指数
4
解决办法
6万
查看次数

使用c#删除大量(> 100K)文件,同时保持Web应用程序的性能?

我试图从一个位置删除大量文件(大的意思是超过100000),从而从网页启动操作.显然我可以使用

string[] files = System.IO.Directory.GetFiles("path with files to delete");
foreach (var file in files) {
    IO.File.Delete(file);
}
Run Code Online (Sandbox Code Playgroud)

Directory.GetFiles http://msdn.microsoft.com/en-us/library/wz42302f.aspx

此方法已经发布了几次: 如何删除目录中的所有文件和文件夹?从目录中删除的文件,如果文件名包含某个词

但是这个方法的问题在于,如果你说了十万个文件就会成为一个性能问题,因为它必须首先生成所有的文件路径然后再循环它们.

如果网页正在等待执行此操作的方法的响应,则添加到此处,您可以想象它看起来有点垃圾!

我有一个想法是在一个不合时宜的Web服务调用中将它包装起来,当它完成时它会激活对网页的响应,说它们已被删除了吗?也许将删除方法放在一个单独的线程中?或者甚至可以使用单独的批处理来执行删除?

在尝试计算目录中的文件数时,我遇到了类似的问题 - 如果它包含大量文件.

我想知道这是否有点矫枉过正?即有一个更简单的方法来处理这个?任何帮助,将不胜感激.

c# file-io file-management

15
推荐指数
1
解决办法
7463
查看次数

删除文件但不删除文件夹 C#

我有一个代码来删除文件夹和其中的所有文件。我只需要删除文件夹内的文件,而不是文件夹本身文件夹“1”,例如必须保留)...如何使用此代码完成此操作?

public class Deletefolder
    {
        public static void Main()
        {

           var dir = new DirectoryInfo(@"C:\d\wid\1");
            dir.Attributes = dir.Attributes & ~FileAttributes.ReadOnly;

                dir.Delete(true);

            }

        }
Run Code Online (Sandbox Code Playgroud)

c# file

6
推荐指数
1
解决办法
5658
查看次数

为什么有时Directory.CreateDirectory失败?

这是我用来提取zip文件的代码,确保目标目录中没有任何脏文件

internal void UnzipProject()
{
    if (Directory.Exists(SourceDir))
        Directory.Delete(SourceDir, true);

    if (File.Exists(CodeZipFile))
    {
        Directory.CreateDirectory(SourceDir); // fails here
        ZipFile.ExtractToDirectory(CodeZipFile, SourceDir);
    }
}
Run Code Online (Sandbox Code Playgroud)

有时Directory.CreateDirectory(SourceDir) 无法创建新的目录,我在下一行得到例外,但如果我退后一步并重试dir创建,它就可以了.下次执行时会重复完全相同的模式.

编辑
这是一个例外,实际上是关于dir没有被创建,我可以看到src目录不存在:

System.UnauthorizedAccessException was unhandled
  HResult=-2147024891
  Message=Access to the path '(...MyPath...)\src\MySolution.sln' is denied.
  Source=mscorlib
  StackTrace:
       at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
       at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
       at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
       at …
Run Code Online (Sandbox Code Playgroud)

c#

5
推荐指数
1
解决办法
5970
查看次数

如何以编程方式清除浏览器缓存?

我尝试以编程方式清除firefox 8浏览器缓存.我正在使用asp.net开发网站,我需要清除浏览器缓存以确保安全性.我尝试了很多方法来清除缓存,但似乎都没有.有任何想法吗?

c# asp.net

4
推荐指数
2
解决办法
3万
查看次数

如何在遍历文件夹树时删除文件

我不确定我是否正确地做了这个或者我的逻辑是否正确.

我试图去一个文件夹结构删除早于一定天数的文件,这部分我已经正确实现,删除空文件夹.

这一切都可以在一个循环中完成吗?
我在哪里删除文件夹?

我想删除最多3或4级的空文件夹.

    private static void TraverseTree(System.IO.DirectoryInfo folder, double days)
    {
        Stack<string> dirs = new Stack<string>();

        if (!folder.Exists)
            throw new ArgumentException();

        dirs.Push(folder.FullName);

        while (dirs.Count > 0)
        {
            string currentDir = dirs.Pop();
            string[] subDirs;
            try
            {
                subDirs = System.IO.Directory.GetDirectories(currentDir);
            }
            // An UnauthorizedAccessException exception will be thrown if we do not have
            // discovery permission on a folder or file. It may or may not be acceptable 
            // to ignore the exception and continue enumerating the remaining files and …
Run Code Online (Sandbox Code Playgroud)

c# filesystems delete-file

2
推荐指数
1
解决办法
2057
查看次数

如何删除整个文件夹/目录?

我想删除整个文件夹或目录以及其中包含的文件和文件夹.如何在C#中实现?

c# directory file delete-file

0
推荐指数
1
解决办法
335
查看次数

如何删除所有文件但保持目录结构不变?

我想删除文件夹中的所有文件,并删除其所有子文件夹和子子文件夹等中的所有文件,但我不想删除文件夹本身.

最简单的方法是什么?

c#

-1
推荐指数
2
解决办法
474
查看次数