0

私はかなり長い間プログラムを作成してきましたが、フォルダを自分自身に貼り付けることができないことを今日まで知りませんでした。

私はこれをかなり不快な方法で見つけました-私のアプリケーション(私たちはファイル閲覧アプリに取り組んでいます)で、フォルダーをそれ自体に貼り付けると、セグメンテーション違反(無限再帰)が発生しました.

02-22 04:01:35.186: A/libc(786): Fatal signal 11 (SIGSEGV) at 0xdeadd00d (code=1), thread 786 (explorermanager)

私の質問は次のとおりです:私が注意する必要があり、ほとんどのプラットフォームにも適用できる他の貼り付け制約はありますか?

4

1 に答える 1

0

Win32では、実際にディレクトリをそれ自体にコピーできます。ただし、サブディレクトリ内に配置されていない場合は、既存のファイルが上書きされるだけです。

注:大きなディレクトリの場合、このソリューションには少し時間がかかります。

// Make sure to link default lib "Shell32.lib"

#include <Windows.h>
#include <Shellapi.h>

int main() {

    SHFILEOPSTRUCT hFileS = { 0 };

    hFileS.hwnd = NULL;
    hFileS.wFunc = FO_COPY;
    hFileS.fFlags = FOF_SILENT;

    hFileS.pTo = "C:\\DevkitPro\\TEST\0"; // Put into sub-dir TEST
    hFileS.pFrom = "C:\\DevkitPro\\*\0";

    SHFileOperation(&hFileS);

    return 0;

}

うまくいけば、これが役立つことを願っています(Windowsを使用している場合)...

MSDNの場合:

http://msdn2.microsoft.com/en-us/library/ms647743.aspx

于 2013-02-22T04:27:18.880 に答える