微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在C#中编辑文本文件,该文件恰好是Illustrator.ai文件

如何解决在C#中编辑文本文件,该文件恰好是Illustrator.ai文件

我们有数百个Illustrator文件,这些文件使用需要更改的字体。我可以在Notepad ++中打开Illustrator文件搜索有问题的字体并将其替换为新字体。然后,该文件将使用正确的字体在Illustrator中打开而不会出现问题。

我试图编写一些C#代码自动执行此操作,但是Illustrator声称生成文件已损坏。

我认为这是由于文件的编码所致,所以我尝试使用各种不同的编码读写文件,结果基本相同。该文件要么根本无法打开,要么是空白页。不管哪种方式,Illustrator都说文件已损坏。

经过几次修改,这是我现在的代码

public void RenameFont()
{
    DirectoryInfo directory = new DirectoryInfo(Common.soURCE_FOLDER);
    FileInfo[] files = directory.GetFiles("*.ai",SearchOption.TopDirectoryOnly);
    foreach (FileInfo file in files)
    {
        string fileName = file.Name.Replace(".ai","");
        if (int.TryParse(fileName,out int itemNumber))
        {
            using (FileStream fs = file.OpenRead())
            using (StreamReader reader = new StreamReader(fs,Encoding.GetEncoding(1252)))
            {
                string line;
                        
                using (StreamWriter writer = new StreamWriter(File.Open(Path.Combine(file.DirectoryName,$"new{file.Name}"),FileMode.Create),Encoding.GetEncoding(1252)))
                {
                    while ((line = reader.ReadLine()) != null)
                    {
                        foreach (string badFont in Common.SEARCH_FOR)
                        {   
                            if (line.Contains(badFont))
                            {
                                line = line.Replace(badFont,Common.REPLACE_WITH);
                            }
                        }
                        writer.WriteLine(line);
                    }
                    writer.Flush();
                    writer.Close();
                }
                reader.Close();
            }
        }
    }
}

即使我只是在不修改字体名称的情况下读写文件,结果还是一样。

编辑:我最后使用Notepad ++的“文件查找”功能替换了文本。它在不到一分钟的时间内处理了所有文件,并且所有文件都在Illustrator中打开而没有问题。

解决方法

一个grep工具可以更可靠,更轻松地完成此任务。不要重新发明轮子-ADyson

尽管grep工具是个好主意(我仍然不知道为什么我没有想到它)。我意识到Notepad ++具有“在文件中查找”功能,可以替我替换文本。

我让它遍历了文件夹中的所有文件,并在需要的地方进行查找/替换。花了不到一分钟,一切都很好。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。