-1

您好,我想知道是否可以从 ressources 文件夹中提取文件以在我尝试过的那一刻将其复制到目录中:

    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

对象“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 回答
0

我将专注于info.CopyTo()通话,因为这是您复制文件的两个选项中更好的方法。正如它所写的那样,它为什么不起作用有多种可能性。对于我正在考虑的所有事情,都会引发异常,因此您应该能够try-catch在代码周围添加一个块并进行调试以查看错误是什么。这是我最好的猜测,按照我尝试调试它们的顺序:

  1. 是什么file?是文件名吗?它是完整路径加文件名吗?在我看来,您的代码希望它在一个地方完全合格,而在另一个地方只是名称。
  2. 源文件不存在。在尝试复制文件之前,我会快速info.Exists确认文件是否存在。
  3. 确保输出文件名有意义。如果file包含路径,那么您可能确实想要这样做info.CopyTo(PATH + "\\shell\\" + info.Name, true),除非您想在输出路径中包含源路径。
  4. 输出目录不存在。如果是这种情况。ADirectoryNotFoundException将被抛出。检查目录是否存在并在执行CopyTo.
  5. 文件名错误。可能包含无效字符,这将导致 aArgumentException或 a NotSupportedException
  6. 路径太长。可能不是这个,但PathTooLongException会抛出一个。
于 2012-07-03T14:51:14.350 回答