var fs = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite);
using(var writer = new StreamWriter(fs))
writer.Write(....);
ファイルに以前にテキストが含まれていて、新しく書き込まれたテキストがファイル内のテキストよりも短い場合は、ファイル内の古いコンテンツが切り捨てられていることを確認するにはどうすればよいですか?FileStreamとStreamWriter - 書き込み後に残りのファイルを切り詰めるには?
この場合、ファイルを切り捨てモードで開くことはオプションではありません。このファイルは、FileStream
オブジェクトを受け取った時点で既に開いています。上記のコードは、ストリームのプロパティを示すためのものです。
EDIT
以下の答えを拡張し、解決策は次のとおりです。私はそれがうまくいく方法もわからないが、
var fs = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite);
using(var writer = new StreamWriter(fs))
{
writer.Write(....);
writer.Flush();
fs.SetLength(fs.Position);
}
答え/ソリューションコードは私に間違っになります読んfs.Position **前** writer.Flushまたはwriter.Dipose(と呼ばれた)は、あなたの本当のバイト数を与えることはありません。あなたが運があるのは、ストリームが自動的に書き込まれたときに自動的に展開されるからです。しかし、2回の長さの適用が1回の書き込みに適用されるため、ファイルが断片化してしまう可能性があります。 – springy76