释放让iBooks占用的冗余空间

用iPad的Safari从网上下载一个PDF文件,比如Programming Your Home.pdf,选择用iBooks打开,这本书就会出现在你的iBooks书架。但如果你用iFile进入/private/var/mobile/Media/Books/Purchases,你会发现多了个文件,3CF55ED902752B18DCF7FCAAFB343AD1.pdf,其大小和内容都跟Programming Your Home.pdf一式一样。进一步看/private/var/mobile/Media/Books/Purchases/Purchases.plist,你会发现其中有这么一段
<dict>
    <key>Genre</key>
    <string></string>
    <key>Inserted-By-iBooks</key>
    <true/>
    <key>Name</key>
    <string>Programming Your Home.pdf</string>
    <key>Path</key>
    <string>3CF55ED902752B18DCF7FCAAFB343AD1.pdf</string>
    <key>Persistent ID</key>
    <string>46F2BD6BBCDEDD4D</string>
    <key>iBooks-UniqueId</key>
    <string>3CF55ED902752B18DCF7FCAAFB343AD1</string>
</dict>

我试着把它改成
<dict>
    <key>Genre</key>
    <string></string>
    <key>Inserted-By-iBooks</key>
    <true/>
    <key>Name</key>
    <string>Programming Your Home.pdf</string>
    <key>Path</key>
    <string>Programming Your Home.pdf</string>
    <key>iBooks-UniqueId</key>
    <string>Programming Your Home.pdf</string>
</dict>
并删除3CF55ED902752B18DCF7FCAAFB343AD1.pdf,发现那本书还在iBooks书架里,还能正常打开。

iBooks把每一本书都存两份,实在太浪费空间了,我得向它要回一半的空间。

开始收回空间:
1. 用filezilla连上iPad,把它的/private/var/mobile/Media/Books/Purchases下的所有的PDF都下载到PC的一个临时目录,比如C:/tmp/books
2. 用putty连上iPad,把它的/private/var/mobile/Media/Books/Purchases下的所有的PDF都删除,Purchases.plist也删除。
3. 处理C:/tmp/books下的PDF文件,把形如3CF55ED902752B18DCF7FCAAFB343AD1.pdf的文件统统删除(如果文件太多,懒得手工一个一个去删,可以写个脚本)。再把PC上存在其他地方的一些自己喜欢看的PDF也拷贝到C:/tmp/books
4. 执行groovy脚本来生成一个Purchases.plist文件

def buf = ["""<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Books</key>
    <array>
"""]
new File('C:/tmp/books').eachFile{
    if(it.name.endsWith('.pdf'))
    buf << """<dict>
      <key>Genre</key>
            <string></string>
            <key>Inserted-By-iBooks</key>
            <true/>
            <key>Name</key>
            <string>${it.name}</string>
            <key>Path</key>
            <string>${it.name}</string>
            <key>iBooks-UniqueId</key>
            <string>${it.name}</string>
        </dict>"""
}
buf << """</array>
</dict>
</plist>"""
new File('c:/tmp/books/Purchases.plist') << buf.join()
 


5. 再用filezilla把PDFs和Purchases.plist传回/private/var/mobile/Media/Books/Purchases
6. 打开iBooks... 结果发现书架一片空白,那个loading图标一直显示,就是看不到书。
7. 怎么回事???把/private/var/mobile/Media/Books/iBooksData2.plist也给删除了,重启iPad再打开iBooks,还是没用。
8. 到底是怎么回事???没理由啊。最后逐行检查Purchases.plist,终于发现问题所在:原来有几本书的名字含有“&”,这个字符是不能直接出现在XML文件中的,得转义或者换成其他的字,果断把&换成and,然后再打开iBooks就看到了一堆书。。。 Cheers!

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值