当前位置: 首页 > 知识库问答 >
问题:

删除文件时我的代码出错?[副本]

尹昀
2023-03-14

我在路径中编辑pic文件并为其创建新的图像文件。我的代码是:

string[] files = Directory.GetFiles(string.Concat(Server.MapPath("/"), "tmp/"));
foreach (string path in files)
{
    string filename = Path.GetFileName(path);
    using (Bitmap b = new Bitmap(string.Concat(Server.MapPath("/"), "tmp/", filename)))
    {

        SolidBrush pixelBrush = new SolidBrush(Color.White);
        Graphics g = Graphics.FromImage(b);
        g.FillRectangle(Brushes.White, 0, 0, 105, 40);

        string outputFileName = string.Concat(Server.MapPath("/"), "tmp\\E", filename);
        MemoryStream memory = new MemoryStream();
        FileStream fs = new FileStream(outputFileName, FileMode.Create, FileAccess.ReadWrite);
        b.Save(memory, ImageFormat.Jpeg);
        byte[] bytes = memory.ToArray();
        fs.Write(bytes, 0, bytes.Length);
        fs.Close();
        memory.Close();
        b.Dispose();
    }
    File.Delete(path);
}

怎么修?

共有1个答案

丁灿
2023-03-14

用using包装图形将会修复它。你也应该把它处理掉。

            using (Bitmap b = new Bitmap(filePath))
            {
                using (Graphics g = Graphics.FromImage(b))
                {
                    ...
                }
            }

此外,您还可以通过组合使用using语句。

        foreach (var path in files)
        {
            var filename = Path.GetFileName(path);
            var filePath = string.Concat(tmpPath, filename);
            using (var b = new Bitmap(filePath))
            using (var g = Graphics.FromImage(b))
            {
                g.FillRectangle(Brushes.White, 0, 0, 105, 40);
                var outputFileName = string.Concat(newPath, filename);

                using (var memory = new MemoryStream())
                using (var fs = new FileStream(outputFileName, FileMode.Create, FileAccess.ReadWrite))
                {
                    b.Save(memory, ImageFormat.Jpeg);
                    var bytes = memory.ToArray();
                    fs.Write(bytes, 0, bytes.Length);
                }
            }
            File.Delete(path);
        }
 类似资料:
  • 我需要删除每天滚动的旧日志文件。要限制我尝试的文件数,请执行以下操作: 但是日志没有被删除。 现在我在尝试 但我得到了一个错误: 错误DefaultRolloverStrategy包含无效元素或属性“Delete” 我的log4j2有点问题。xml文件? 我将maven与以下内容一起使用:

  • 我们可以通过获取url来删除图像还是有其他方法?

  • 我在使用org.apache.commons.io.FileUtils从img目录删除文件时遇到问题。我正在使用以下代码: 实际上,该代码是用来替换img目录中已有的图像文件。我需要删除所有以前存在的文件,名称是n.*,与新文件,例如n.png。如果我试图删除图像文件,我会得到变量成功的false值,并且文件不会被删除。但不包括图像文件,例如*.abc;*.ACD;*.ACDC等被成功删除。这个问

  • 本文向大家介绍ruby实现的文件自删除代码分享,包括了ruby实现的文件自删除代码分享的使用技巧和注意事项,需要的朋友参考一下 因为windows的文件删除机制和unix like的不一样,so不保证如下代码能在windows中使用,哪位童鞋帮我在windows中测试一下也好啊! 最后2句意思是你可以伪造代码或者干脆毁尸灭迹...

  • 问题内容: 我正在尝试为Java创建一个小的功能性编程库(只是为了解决自己的问题)。虽然定义高阶函数为S,S和就是我所遇到的这个问题:需要收集的功能,并返回相同类型的具有几乎相同的实现的集合,但必须重新界定为每个数据结构-s,s和s。 例如,这是s和s 的函数的实现: 一个函数: 如从这个例子可以看出,对于实施方式中的主体和几乎相同。 有喜欢很多很多的功能,并在我的图书馆,每一类又是对每种类型我很

  • 我从Eclipse导出了一个项目,然后我尝试在我的机器上运行它,但我做不到。我读了一些文章,意识到我导出程序的方式不对,(我使用Eclipse作为mi IDE)Eclipse提供了导出项目的选项,其中(Runnable.JAR)选项和(.JAR扩展)都是不同的。我认为这是正确的方式。JAR扩展,但事实并非如此,我尝试了另一个项目(Runnable.JAR),它成功了。但是我从Eclipse的工作区