2016-06-12 21 views
0

Ich muss ein Verzeichnis erstellen und dann eine Textdatei innerhalb dieses Verzeichnisses mit Namen kommen von Parameter. Z.B. _year ein Parameter ist und ich versuchte, wie:Erstellen von Parametern benannte Textdateien C#

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... 
} 

Dieser Code einen Ordner 2005 in bestimmten Pfad und dann in diesem Ordner gibt es einen weiteren Ordner mit dem Namen 2005cluster.txt, während ich eine Textdatei 2005cluster.txt innen benannt erstellen möchten gestattet die Schaffung Ordner 2005.

  • Wo bekomme ich falsch beim Erstellen der richtigen Ordner und Dateinamen?
  • Eine UnauthorizedAccessException, die unter der zuvor genannten Zeile generiert wird, d. H. Zugriff verweigert. Warum passiert dies?

TextWriter _twClus = File.CreateText(_path);

+0

Also alles, was Sie tun möchten, ist ein Verzeichnis erstellen, dann eine Datei in diesem Verzeichnis Sie gerade erstellt haben? – carefulnow1

+1

Ja, aber Verzeichnis mit Jahr Name und Datei auch mit Jahr Name plus "Cluster" zum Beispiel '2005 \ 2005cluster.txt' wo 2005 Verzeichnis ist und 2005cluster.txt ist Datei – maliks

+0

So bekommen Sie das aktuelle Jahr von Windows, oder erlaubt das Benutzer, um es zu übergeben? – carefulnow1

Antwort

0

Wie Sie filename separat definieren, könnten Sie dies versuchen:

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... 
} 
0

dies versuchen, so dass Sie Ihr Weg einen Schrägstrich vor dem Dateinamen hat:

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

' Path.Combine() 'macht die harte Arbeit, die Sie beschreiben. –

+1

Es wurde nicht gefragt, was hier beantwortet wurde, während zwei Kugeln die gestellten Fragen sind – maliks

0

die Dateinamen aus dem Pfad entfernen wie:

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

Zur Definition Der Dateiname muss diese Codezeile wie folgt geändert werden:

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