Filestream
私が得ていないC#の動作があります。ファイルがあります。このファイルには、長さ 3 の文字列が含まれています。ファイル ストリームを開いて 6 文字の長さの文字列で上書きすると、新しい文字列が含まれますが、最初の 3 文字だけが含まれます。前の長さに切り捨てられます。
using (FileStream fs = File.open(rootPath + filePath, FileMode.Truncate, FileAccess.Write, FileShare.None))
{
bool write = fs.CanWrite;
bool canSeek = fs.CanSeek;
byte[] data = Encoding.ASCII.GetBytes(sixchars);
fs.Write(data, 0, data.Length);
fs.Flush();
}
では、なぜそうなるのか、どうすれば回避できるのでしょうか?
私も一緒にやってみましたFileMode.Create
。CanWrite
そしてCanSeek
ですtrue
。
編集
ここで、コンパイルするコード サンプルを示します。Windowsエクスプローラーでファイルを作成し、以前に「123」と書きました。
string path = @"C:\1\test.txt";
using (FileStream fs = File.Open(path , FileMode.Truncate, FileAccess.Write, FileShare.None))
{
byte[] data = Encoding.ASCII.GetBytes("666666");
fs.Write(data, 0, data.Length);
fs.Flush();
}
私も試しました
File.WriteAllText(path , "666666");
と
byte[] datas = Encoding.ASCII.GetBytes("666666");
File.WriteAllBytes(path , datas);
結局、結果は 666666 ではなく 666 のままです。