ファイルサイズ0のファイルが削除できない

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
dic

ファイルサイズ0のファイルが削除できない

#1

投稿記事 by dic » 15年前

タイトルの通りファイルサイズがゼロのファイルを
remove( "hoge.txt" );
と削除しようとしましたが、削除できませんでした
また
DeleteFile( "hoge.txt" );
としても削除できませんでした

ソースとしては下のとおりとなってます
ファイルサイズが15kくらいあるのは削除できるのですが
ファイルサイズがゼロのファイルだけが残ってしまう現象が起きてます

どうやったらファイルサイズゼロのファイルが削除できるのでしょうか?

開発環境:Windows2000 VC++6
確認動作OS:Windows2000,XP
int    i;
    char    file[1024];
    for( i=1; i<=g_iEnd; i++ )
    {
        memset( file, 0, sizeof(file) );
        sprintf( file, "%d.txt", i );
        DeleteFile( file );

        memset( file, 0, sizeof(file) );
        sprintf( file, "%d_jis.txt", i );
        DeleteFile( file );

        memset( file, 0, sizeof(file) );
        sprintf( file, "%d_list.txt", i );
        DeleteFile( file );
    }

たいちう

Re:ファイルサイズ0のファイルが削除できない

#2

投稿記事 by たいちう » 15年前

VC7.1, Windows XPで試しましたが、remove, DeleteFileともに削除できました。

・sprintfの使い方に勘違いなどはないですか?
→ ファイル名を直接ソースコードに書いても削除できない?
・ファイルをエディタやプログラムの別の部分で開いている?
・VC6のバグ?
→ ちょっと考えにくい。VCのサービスパックは何を当てていますか?
・プログラムでそのファイルに何か書き込みをしてからなら削除できる?

ookami

Re:ファイルサイズ0のファイルが削除できない

#3

投稿記事 by ookami » 15年前

手元に VC++6 が無いので確認できていないのですが、
(VC++2005Expressでは問題なく削除できることを確認しました)
別プロセスが握っている可能性はありませんか?エクスプローラ上で削除することはできるのでしょうか。

dic

Re:ファイルサイズ0のファイルが削除できない

#4

投稿記事 by dic » 15年前

サービスパックはなにも当てていない状態ですので
サービスパックをあてようと思います

エクスプローラー上では削除できます

また、ファイルサイズがゼロのファイルが作成されないように
出力のところを変更し解決しました

ありがとうございました

Poco

Re:ファイルサイズ0のファイルが削除できない

#5

投稿記事 by Poco » 15年前

こういう時はDeleteFile()が失敗した時のエラー番号をGetLastError()で取得することを
お勧めします。

閉鎖

“C言語何でも質問掲示板” へ戻る