作成して書き込むファイル名のリストがあります。私は、このようなものすべてを通過する foreach ループを持っています
void WriteFiles(byte[] data)
{
foreach (string fileName in fileNames)//fileNames is my List<string>
{
FileStream fs = File.Create(fileName)
fs.Write(data, 0, data.Length);
fs.Close();
}
}
ファイルのリストが 1.txt、2.txt、および 3.txt であるとしましょう。奇妙なことに、1.txt、2.txt、および 3.txt がすべて作成されます。しかし、データは 1.txt に 3 回書き込まれただけで、2.txt と 3.txt は空です。デバッガーでダブルチェックしましたが、ループするたびに fileName が異なります。ファイルを読み書きするプログラムをたくさん書いてきましたが、このような動作に遭遇したことはありません。私はとても混乱しています。
編集
おそらく、これはより理にかなっています。これは、私が実行して問題を発生させ、Visual Studio から直接コピーして貼り付けた実際のコードです。
using System;
using System.Collections.Generic;
using System.IO;
namespace ConsoleApplication1
{
class Program
{
static List<string> fileNames = new List<string>();
static void Main()
{
Directory.CreateDirectory("C:\\textfiles");
fileNames.AddRange(new string[] { "1.txt", "2.txt", "3.txt" });
WriteFiles();
}
static void WriteFiles()
{
foreach (string fileName in fileNames)
{
using (StreamWriter sw = new StreamWriter(File.Create("c:\\textfiles\\" + fileName)))
{
sw.Write("This is my text");
}
}
}
}
}
これを実行すると、C:\textfiles フォルダーに 3 つのテキスト ファイル (1.txt、2.txt、3.txt) が作成されましたが、いずれも以前には存在しませんでした。
メモ帳でファイルを開くと、これが私が持っているものです
1.txt - "This is my textThis is my textThis is my text"
2.txt - 何もない
3.txt - 何もない
なんだ???これは意味がありません。