【问题标题】:Write a text file to a sub-folder将文本文件写入子文件夹
【发布时间】:2012-10-31 18:59:09
【问题描述】:

我正在尝试将文本文件写入:C:\Test folder\output\,但没有将C:\ 放入。

这是我目前拥有的,目前有效,但开头有 C:\

StreamWriter sw = new StreamWriter(@"C:\Test folder\output\test.txt");

我真的很想将文件写入输出文件夹,但不必在前面有C:\

我尝试了以下方法,但我的程序只是挂起(不写出文件):

(@"\\Test folder\output\test.txt");

(@".\Test folder\output\test.txt");

("//Test folder//output//test.txt");

("./Test folder//output//test.txt");

反正我可以做到吗?

谢谢。

【问题讨论】:

  • 您希望这个子文件夹位于当前驱动器的根目录下还是您正在寻找其他东西? (即在应用程序目录中创建一个子文件夹)。
  • 为什么要删除 C:\?
  • @e4rthdog:我已经创建了子文件夹,我现在只想将文本文件写入此文件夹。
  • “c:”有什么问题? (你为什么不想包括这个?) - habib 回答了第一件事(\\ = networkshare),第二件事只有在你的工作目录中有Test文件夹和输出时才有效,3和4只是* nix-variants 1 和 2...
  • @Robuust:因为我需要将我的程序发送给其他人(在我公司内),以便他们可以在我所在的文件夹中使用它。

标签: c# winforms filepath streamwriter


【解决方案1】:

感谢大家的帮助。

我的一位同事也加入并提供了帮助,但@Kami 也提供了很多帮助。

当我有的时候它现在可以工作了:

string path = string.Concat(Environment.CurrentDirectory, @"\Output\test.txt");

正如他所说:“CurrentDirectory 是运行程序的地方。

【讨论】:

    【解决方案2】:

    我了解到您希望将数据写入指定文件夹。第一种方法是在代码中或通过配置指定文件夹。

    如果您需要写入特定驱动器或当前驱动器,您可以执行以下操作

    string driveLetter = Path.GetPathRoot(Environment.CurrentDirectory);
    string path = diveLetter + @"Test folder\output\test.txt";
    StreamWriter sw = new StreamWriter(path);
    

    如果目录需要相对于当前应用程序目录,则用户AppDomain.CurrentDomain.BaseDirectory获取当前目录并使用../组合导航到所需文件夹。

    【讨论】:

    • 太棒了,必须这样做。它现在可以工作了——但这也是说“使用 C:\”的类似方式——我现在必须使用 C:\。谢谢
    【解决方案3】:

    您可以使用System.IO.Path.GetDirectoryName 来获取正在运行的应用程序的目录,然后您可以将路径的其余部分添加到此目录中。

    我没有清楚地从这个问题中得到你想要什么,希望这个得到它..

    【讨论】:

      【解决方案4】:

      一种常见的技术是使目录相对于您的 exe 的运行时目录,例如,一个子目录,如下所示:

      string exeRuntimeDirectory = 
          System.IO.Path.GetDirectoryName(
              System.Reflection.Assembly.GetExecutingAssembly().Location);
      
      string subDirectory = 
          System.IO.Path.Combine(exeRuntimeDirectory, "Output");
      if (!System.IO.Directory.Exists(subDirectory))
      {
          // Output directory does not exist, so create it.
          System.IO.Directory.CreateDirectory(subDirectory);
      }
      

      这意味着无论 exe 安装到何处,它都会创建一个“输出”子目录,然后可以将文件写入该子目录。

      它还具有将 exe 及其输出文件保存在一个位置的优点,而不是分散在各处。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-22
        • 1970-01-01
        • 1970-01-01
        • 2014-09-26
        • 2013-12-06
        • 1970-01-01
        相关资源
        最近更新 更多