2012-11-12 112 views
1

我想写出一个文本文件: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"); 

反正我能做到这一点?

谢谢。

+0

你想让这个子文件夹是在根当前驱动器或者您正在寻找其他的东西(即创建的应用程序目录下的子文件夹) – e4rthdog

+1

你为什么要删除C:\ – Rob

+0

@ e4rthdog:我已经在子文件夹中创建的,我只是想现在写出到这个文件夹的文本文件。 – Kevdog777

回答

2

感谢您的帮助球员。

我的一位同事插话,并帮助为好,但@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来获得当前目录和使用../组合导航到所需的文件夹。

+0

太棒了,那必须要做。它现在可以工作 - 但这也是类似的说法:“使用C:\” - 现在我必须使用C:\。谢谢 – Kevdog777

2

的一种常用技术是使相对目录到你的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的优势,它的输出文件一起在一个位置,而不是散落得到处都是。

2

您可以使用System.IO.Path.GetDirectoryName让你运行应用程序的目录,然后您可以添加到这个路径的其余部分..

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

相关问题