-1

こんにちは、これを試した時点で、リソースフォルダーからファイルを抽出してディレクトリにコピーすることが可能かどうかを知りたいです:

    protected void Form1_Load(object sender, EventArgs e)
    {
            FileInfo info = new FileInfo(file);
            info.CopyTo(PATH + "\\shell" + "\\" + file, true);
            Bitmap bmp = (Bitmap)Properties.Resources.ResourceManager.GetObject(file);
            Image bitmap = Bitmap.FromFile(Environment.GetFolderPath   (Environment.SpecialFolder.Desktop) + "ConnectableCORR\\ApplicationConnectTable\\Resources\\teapot.jpg");
            bitmap.Save(Path.GetDirectoryName(PATH + "\\shell" + "\\" + "thumbnail_3D.png"), System.Drawing.Imaging.ImageFormat.Png);
     }

しかし、コピーが機能していません。何か間違っていますか?

よろしくお願いします。

4

2 に答える 2

0

info.CopyTo()ファイルをコピーする2つのオプションのより良い方法であるため、呼び出しに焦点を当てます。それが書かれているように、それが機能しない理由については多くの可能性があります。私が考えているすべてのことについて、例外がスローされるのでtry-catch、コードの周りにブロックを追加し、デバッグしてエラーが何であるかを確認できるはずです。これが私の最良の推測です、私がそれらをデバッグしようとする順序で:

  1. fileですか?ファイル名ですか?フルパスとファイル名ですか?あなたのコードは、ある場所では完全に修飾され、別の場所では名前だけが修飾されていることを期待しているように見えます。
  2. ソースファイルが存在しません。コピーする前に、ファイルが存在することを簡単info.Existsに確認します。
  3. 出力ファイル名に意味があることを確認してください。パスが含まれている場合は、出力パスにソースパスを含めない限り、file実際に実行する必要があります。info.CopyTo(PATH + "\\shell\\" + info.Name, true)
  4. 出力ディレクトリが存在しません。このような場合は。ADirectoryNotFoundExceptionがスローされます。ディレクトリが存在するかどうかを確認し、作成する前に作成してくださいCopyTo
  5. 不正なファイル名。無効な文字が含まれている可能性があります。これにより、ArgumentExceptionまたはが発生しますNotSupportedException
  6. パスが長すぎます。おそらくこれではありませんが、PathTooLongExceptionがスローされます。
于 2012-07-03T14:51:14.350 に答える
0

オブジェクト "Image"のメソッド " Save " は "filename" にファイルの名前を必要とし、それを送信しています:

Path.GetDirectoryName(PATH + "\\ shell" + "\\" + "thumbnail_3D.png")

Path.GetDirectoryName

戻ります:

PATH + "\\ shell" + "\\"

ファイル名は失敗します。ファイル名も含める必要があります。

編集

これを試して、パスを確認してください:

FileInfo info = new FileInfo(file);
MessageBox.Show(string.Format("File '{0}' exist '{1}'", info.FullName, info.Exists));

var destinationFile = string.Format("{0}\\shell\\{1}", PATH, file);
info.CopyTo(destinationFile, true);

MessageBox.Show(string.Format("File '{0}' exist '{1}'", destinationFile, File.Exists(destinationFile)));
于 2012-07-03T14:03:18.720 に答える