创建参数命名文本文件C#

时间:2016-06-12 19:36:29

标签: c# directory filenames unauthorizedaccessexcepti

我必须创建一个目录,然后在该目录中创建一个文本文件,其名称来自参数。例如。 _year是一个参数,我试过:

var _root = "C:\\Users\\~\\DirichletProcessClustering\\Results";
var _clusterFilename = _year.ToString() + "cluster.txt";
var _path = Path.Combine(_root, _year.ToString(), _clusterFilename);  

if(!Directory.Exists(_path))
{
   Directory.CreateDirectory(_path);
}

// output topk file
TextWriter _twClus = File.CreateText(_path);   
foreach (// loop )  
{ 
   _twClus.WriteLine("Cluster");  
   //... rest of the implementation...
}  

此代码在指定路径创建名为2005的文件夹,然后在此文件夹内,还有另一个名为2005cluster.txt的文件夹,而我想在文件夹中创建名为2005cluster.txt的文本文件2005

  • 我在创建正确的文件夹和文件名时遇到了错误?
  • 在下面提到的行生成的UnauthorizedAccessException 代码,即访问被拒绝。为什么会这样?

TextWriter _twClus = File.CreateText(_path);

3 个答案:

答案 0 :(得分:0)

尝试这样,以便您的路径在文件名前有斜杠:

var _root = "C:\\Users\\~\\DirichletProcessClustering\\Results\\";

答案 1 :(得分:0)

从路径中删除文件名:

var _path = Path.Combine(_root, _year.ToString()); 

要定义文件名,您必须将此行代码修改为:

TextWriter _twClus = File.CreateText(Path.Combine(_path, _clusterFilename));  

答案 2 :(得分:0)

当你单独定义fileName时,你可以试试这个:

var _root = "C:\\Users\\~\\DirichletProcessClustering\\Results";
var _clusterFilename = _year.ToString() + "cluster.txt";
var _path = Path.Combine(_root, _year.ToString());  

if(!Directory.Exists(_path))
{
   Directory.CreateDirectory(_path);
}

// output topk file
TextWriter _twClus = File.CreateText(Path.Combine(_path, _clusterFilename));   
foreach (// loop )  
{ 
   _twClus.WriteLine("Cluster");  
   //... rest of the implementation...
}