【问题标题】:Some of my .URL bookmark files are broken我的一些 .URL 书签文件损坏了
【发布时间】:2013-08-21 19:22:06
【问题描述】:
我编写了一个程序来创建一些书签/收藏夹快捷方式(.url 文件)。我检查了它创建的一些书签文件,其中一些还可以(图 1),但其中一些以不同的图标显示(图 2)并在尝试打开它们时给出错误消息(图 3) .
我已经使用文本编辑器检查了这些文件,并确认它们确实包含适当的书签数据。我什至通过将快捷方式直接从浏览器拖到文件夹中创建了一些测试书签,并将它们与我的程序创建的文件进行比较,它们按位相同。
我发誓他们曾经一切都很好,但现在他们似乎不再工作了。这是怎么回事?我该如何解决?
图1:部分生成的书签文件不错
图 2:一堆生成的书签文件坏了(现在?)
图 3:对话框声称书签的目标无效,即使它没有
【问题讨论】:
标签:
caching
bookmarks
shortcuts
【解决方案1】:
事实证明,这是由于缓存而发生的。 Windows 资源管理器缓存文件(尤其是小的“系统”文件,如包含书签的快捷方式)。问题是它可以过早地缓存它们,所以如果文件无效(例如,在开发过程中)或者在文件完成写入之前被缓存(‽),那么资源管理器将继续使用它,直到缓存被清除。显然,修复它的一种方法是简单地清除缓存,但唯一明显的方法是重新启动(可能也注销并重新登录)。当然,这并不理想,尤其是如果您仍处于开发阶段。
A knowledge-base article 表示它适用于带有 Internet Explorer 7 的 Windows XP、Vista 和 Server 2003,并为它们提供了修补程序,但它也适用于带有 IE9 的 Windows 7,它没有修补程序(即使修补程序是于 2011 年 10 月发布,远在 Windows 7 发布之后)。
解决此问题的一种简单方法是重命名书签文件或包含文件夹。无论哪种方式,Explorer 都会将其视为“新”文件并忽略缓存。
一个常见的问题是,您不能在每次运行程序时简单地重命名文件或文件夹(当然可以,但这并不理想)。因此,您需要解决导致 Windows 缓存坏文件的问题。以下是一些有关执行此操作的提示:
减少创建空.url 和写入其内容之间的时间。例如,不要打开/创建文件,然后将内容构建为字符串并将它们写入文件,而是考虑将内容(无论如何简单且小)构建为字符串在打开文件之前 .然后转储内容并关闭它。这使得当 Windows 注意到该文件时,它更有可能已经有了它的内容。
1234563整个事情不会是宽字符。
检查您的行尾是否为CR+LF。写入文件时,很容易简单地追加 \n,但您应该像 Windows 和浏览器一样使用 \r\n。
确保文件不包含非法字符。这通常不应该是可能的,但它可能会发生。
此外,某些书签自然会带有通用地球图标,并在您尝试打开它们时引发错误。对于链接到未在系统中设置的不同协议的任何书签都是如此,以便通过书签打开:
- Chrome 内部页面,例如
chrome://version
- 像
javascript:alert('Woot!');这样的书签
- P2P 协议,例如
ed2k://…,如果该协议未在系统中注册