【问题标题】:Could not find a part of the path in c#在c#中找不到路径的一部分
【发布时间】:2017-03-24 10:34:48
【问题描述】:

我正在尝试构建一种方法,该方法能够在文件中写入另一个文件夹中的文件数。我已经得到它但它不起作用,因为给我一个错误:

找不到路径的一部分' C:\Users\Administrator\Desktop...\bin\release\%USERPROFILE%\AppData\Local_logC'

这是我的代码:

private static int GetCountGFiles(string dirname)
{
    int fileCount = 0;
    dirname = dirname.TrimEnd(new char[] { '\\' }) + @"\";

    var fixedDirname = Environment.ExpandEnvironmentVariables(dirname);

    fileCount += System.IO.Directory.GetFiles(fixedDirname).Length;

    string[] all_subdirs = System.IO.Directory.GetDirectories(dirname);

    foreach (string dir in all_subdirs)
        fileCount += GetCountGFiles(dirname); 

    string data = string.Format("LogReg.txt");

    System.IO.Directory.CreateDirectory(filePath);
    var fileandpath = filePath + data;

    using (StreamWriter writer = File.AppendText(fileandpath))
    {
        writer.WriteLine("[" + DateTime.Now + "]" + " - " + "Nº de Records: (" + fileCount.ToString() + ")");
    }

    return fileCount;
}

然后我这样调用方法:

GetCountGFiles(@"%USERPROFILE%\AppData\Local\Cargas - Amostras\_logsC\");

我该怎么办?

【问题讨论】:

    标签: c#


    【解决方案1】:

    Directory.GetFilesDirectory.GetDirectories 之类的方法不会自动确定您传递给它的环境变量是什么。您需要使用Environment.ExpandEnvironmentVariables 手动执行此操作。例如:

    var fixedDirname = Environment.ExpandEnvironmentVariables(dirname);
    

    现在你可以这样做了:

    fileCount += System.IO.Directory.GetFiles(fixedDirname).Length;
    

    (PS 不需要在string 上使用ToString()

    【讨论】:

    • 首先感谢您的回复。我已经编辑了帖子,但它仍然给我错误。如果我在调用该方法时将路径更改为“C:\\Users\Administrator\AppData\Local_logsC”,它不会给我错误。
    • 方法中使用dirname的地方都需要更新,你还是在2个地方使用。
    • 感谢您的帮助。我能够用它来解决它!
    【解决方案2】:

    “%USERPROFILE%”部分是环境变量的占位符。文件 API 不知道如何处理。

    您需要在输入字符串上使用Environment.ExpandEnvironmentVariables, 在将其传递给Directory.GetFiles

    之前

    【讨论】:

    • @DavidG 谢谢(让我回复 ;-)
    • 你不会在任何你应该使用的地方使用fixedDirname,但在一些地方仍然是dirname,包含%USERPROFILE%。在他的回答中,@DavidG 也已经告诉过你了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-13
    • 1970-01-01
    相关资源
    最近更新 更多