2016-04-27 7 views
0

このコードを書きましたが、テキストファイルが作成されないたびにFitness50という名前のフォルダが作成されます。このフォルダを開き、arraylistの値を保存します。 はので、私はすべての最初の、まあこの私はbin-debugでフォルダを作成してからテキストファイルを作成し、それにテキストファイルを書き込む必要があります

DirectoryInfo myDir = new DirectoryInfo(@"E:"); 
ParentFolderName1 = "Fittness50"; 
myDir.CreateSubdirectory(ParentFolderName1); 
myDir = new DirectoryInfo(ParentFolderName1); 
ParentFolderName1 = "Fittness50"; 
myDir.CreateSubdirectory(ParentFolderName1); 



FileName1 = "./" + "" + ParentFolderName1 + "" + "/" + "Fittness10" + "" + "" + PopulationID + "" + ".txt"; 

FileStream fs2 = new FileStream(FileName1, FileMode.Create, FileAccess.Write); 
StreamWriter SW2 = new StreamWriter(fs2); 

for (i = 0; i < AlTargetData.Count; i++) 
{ 
     SW2.WriteLine(AlTargetData[i]); 

} 

AlTargetData.Clear(); 

SW2.Close(); 
fs2.Close(); 
+0

"テキストファイルが作成されていません"、ファイルの作成を妨げるエラーが発生していますか? – Zack

+0

'AlTargetData.Count'をチェックして0でないことを確認してください。' SW2.WriteLine(AlTargetData [I]);を呼び出すためにループを入力しないと、ファイルが作成されるとは思われませんが、 'StreamWriter'をインスタンス化するときにファイルが作成されないことを100%保証していません。 – Zack

+1

'bin/debug'ではなく' E: 'にフォルダを作成しているようです。ファイルの場所に文字列を組み合わせる代わりに、 'Path.Combine'を使用します。 – DrewJordan

答えて

4

を試してみましたため、/は、Windows上の優先ディレクトリの区切りではなく、\です。 /がうまく機能したように、それを使用する理由はありません。第二に、あなたはFittness10フォルダを作成していませんが、Fittness50を2回作成しています。 3番目に、作成したフォルダにファイルを書き込むのではなく、現在の作業ディレクトリ.にファイルを書き込んでいます。あなたのコード(あるいは、少なくとも私はあなたが達成したい理解してどのような)

はこれに大幅に短縮することができます。

string path = @"E:\Fittness50\Fittness10"; 
if (!Directory.Exists(path)) 
    Directory.CreateDirectory(path); 

string fileName = Path.Combine(path, String.Format("{0}.txt", PopulationID)); 
File.WriteAllText(fileName, String.Join(Environment.NewLine, AlTargetData)); 

あなたがないbin\debugへの書き込みを考慮すべきであることに注意してください。エンドユーザのマシンにはbin\debugはありません。ユーザーがアプリケーションをインストールする場合は、ほとんどの場合、アプリケーションが書き込みを許可されないProgram Filesフォルダーにインストールされます。代わりに、Environment.GetFolderPathから選択できるもののような共通の場所に書き込むことを検討してください。

+1

あなたはパス文字列で '/'を使うことができますが、Windowsはそれをうまく処理します。 – DrewJordan

+0

プログラムフォルダへの書き込みに関して:それは依存します。私はしばしば、プログラムのフォルダにある簡単なini設定ファイルを使用して、インストーラなしで小さなツールを作成します。私は誰もがプログラムファイルでそれを解凍することを期待していない。しかし、もっと大きなものについては、ええ、ユーザーフォルダを使用してください。 – Nyerguds

+0

あなたはそうすることができますが、どうしてでしょうか? Windowsでは、パス区切り文字を「\」と定義しています。 "/"も処理されるという事実は、それを使うべきではありません。 –

関連する問題