[リストへもどる]
一括表示

投稿時間:2004/01/11(Sun) 11:21
投稿者名:tak
Eメール:
URL :
タイトル:
内容がまったく同じファイルを特定する方法
こんにちは。いつも参考させてもらっています。

実行環境はWINNT/9x VB6.0+SP5 メモリ128MB〜256MB CPU700MHZ〜1.2GHZ

ある処理の終了後に、結果ファイル(result_yymmddhhmmss.txt)を作成します。
結果ファイルは処理件数により内容が異なり、20KB〜1000KBとサイズがまちまちです。
ただし、中には名称が異なるが、内容がまったく同じ結果ファイルが存在しています。
(ちなみに、同サイズでも別内容であることもあります。)
この「内容がまったく同じ結果ファイル」を削除したいのです。
つまり内容が同じものを複数残してはいけないのです。

サイズがまったく同じものを取得して、両者、または3者、4者間で一行ずつ取得して、
比較していくということも考えましたが、
@処理速度的な問題。
Aファイルのオープン中になんらかのエラーで強制中断でもした場合に結果ファイルが
破壊される恐れがある。
との事で、この方法は却下となりました・・。

さらに現状ではtxt形式ですが、将来的にzip形式にするため、これにも対応できる方法を
模索しているんです。
同名称、同サイズで重複する同内容のファイルを削除するという方法を
ご教授頂けませんでしょうか・・。よろしくお願いします。

・・こんなことVBでできるものなのでしょうか・・。

投稿時間:2004/01/11(Sun) 13:31
投稿者名:nobu
Eメール:
URL :
タイトル:
Re: 内容がまったく同じファイルを特定する方法
> ただし、中には名称が異なるが、内容がまったく同じ結果ファイルが存在しています。
> (ちなみに、同サイズでも別内容であることもあります。)
> この「内容がまったく同じ結果ファイル」を削除したいのです。
> つまり内容が同じものを複数残してはいけないのです。

ここのHPの FileSystemObject オブジェクト関係
       テキストファイルの読込表示
            FileSystemObject の場合


RichTextBox1.Text と RichTextBox2.Text に表示させて
(RichTextBox1.Visible = False などでも良いかと)

    If RichTextBox1.Text = RichTextBox2.Text Then
      比較はどうでしょうか?
  試しに1文字変えたら異なると出ました。

ファイル破損が怖いなら別フォルダに FileCopy してからとかでは如何でしょうか?

DOSに FC がありましたが、これの利用は?
 
 

投稿時間:2004/01/11(Sun) 13:42
投稿者名:NAO★
Eメール:
URL :
タイトル:
Re: 内容がまったく同じファイルを特定する方法
CRC32 や MD5 といったファイルの固有の値をあらかじめリスト化しておければ
削除のときは同じ値のものだけ削除すれば良いのでしょう。

結果ファイルを出力するプログラムが自作であるなら
http://sakura.canvas.ne.jp/spr/mycroft/dat/soft.html#GetCrc
あたりを組み込んで結果ファイル出力時にCRC値をリスト化(CSVとか)
しておくのが良いのではないでしょうか?

投稿時間:2004/01/11(Sun) 21:28
投稿者名:tak
Eメール:
URL :
タイトル:
レスありがとうございました!解決です
nobuさん、NAO★さん、レスどうもありがとうございましたm(_ _)m
2つも実用性の高そうな案を出していただけて本当に助かりました。明日一日かけて調べてみようと思います。

>nobuさん
こちらのHPに同様なことがサンプルとしてあったのですね。ご指摘ありがとうございました。
RichTextBoxを不可視状態にしておく、というのは使えそうです。
これから検討してみます。

>NAO★さん
CRCは聞いたことありましたが、MD5・・??こちらについては、これから調べてみるつもりです。
おっしゃるように、結果ファイル作成時に同時にCRCをリスト化しておけば、カンタンに同内容のものを
削除できそうです。こちらについても、これから検討しようと思います。