0

拡張子が .bin の特定のファイルの内容を消去する必要があります。

どうすればいいのですか?

4

4 に答える 4

2

ファイルのサイズをゼロにするには、次のようにします。

System.IO.File.WriteAllText(@"particular.bin", String.Empty);
于 2012-10-22T08:47:30.190 に答える
1

D:\test ディレクトリの下にある .bin 拡張子を持つすべてのファイルを再帰的に削除します。

if (Directory.Exists(@"D:\test"))
{
    string[] files = Directory.GetFiles(@"D:\test", "*.*", SearchOption.AllDirectories);
    foreach (string file in files)
    {
        FileInfo fileInfo = new FileInfo(file);
        if (fileInfo.Name.EndsWith(".bin"))
        {
            File.Delete(file);
        }
    }
}
于 2012-10-22T08:57:12.847 に答える
1
using System;
using System.Text;
using System.IO;

namespace ClearContents
{
    public partial class Form1 : Form
    {
        private void btnClear_Click(object sender, EventArgs e)
        {
            //get all the files which has the .bin extension in the specified directory
            string[] files = Directory.GetFiles("D:\\", "*.bin");

            foreach (string f in files)
            {
                File.WriteAllText(f, string.Empty); //clear the contents
            }
        }
    }
}
于 2012-10-22T09:01:49.253 に答える
1

このコードclearsは、bin ファイルが渡したものです。「クリア」の意味は次のように定義されています。

渡されたファイル内のすべてのバイトをゼロに設定し、既存のファイル サイズを保持します

private void SetFileToZero(string inputFile)
{
    // Remove previous backup file
    string tempFile = Path.Combine(Path.GetDirectoryName(inputFile), "saved.bin");
    if(File.Exists(tempFile)) File.Delete(tempFile);

    // Get current length of input file (minus 4 byte)
    FileInfo fi = new FileInfo(inputFile);
    int pos = Convert.ToInt32(fi.Length) - 4;
    string name = fi.FullName;

    // Move the input file to "saved.bin"
    fi.MoveTo(tempFile);

    // Create a zero byte length file with the requested name
    using(FileStream st = File.Create(name))
    {
      // Position the file pointer at a position 4 byte less than the required size
      UTF8Encoding utf8 = new UTF8Encoding();
      BinaryWriter bw = new BinaryWriter(st, utf8);
      bw.Seek(pos, SeekOrigin.Begin);

      // Write the last 4 bytes
      bw.Write(0);
    }
}

OS は、この位置が実際の長さを超えている場合でも、ファイル内の特定の位置に書き込む要求を受け入れます。これを行うために、OS はファイルを要求された長さに拡張し、ゼロで埋めます。(これは非常に高速で、遅延はほとんど目立ちません)
注意: 安全上の理由から、ファイルのバックアップ コピーを作成します。MoveTo の後で、FileInfo 変数の情報は使用しません。移動したファイルを参照するように変更されるためです。

于 2012-10-22T09:20:42.310 に答える