2013-04-08 34 views
2

我正在尝试安装PhpStorm,并且在看了一段很长的故事之后,它看起来像是我有一些不好的字体在使用Java。字体文件不会删除

我完全不熟悉Java,但是我发现此代码循环访问我的字体并找到不好的字体。我修改了它来删除坏字体,但不会删除。

import java.io.File; 
import java.awt.Font; 
import java.awt.GraphicsEnvironment; 

public class myFontCheck { 
    public static void main(String[] args) { 
    Font[] fonts = GraphicsEnvironment.getLocalGraphicsEnvironment().getAllFonts(); 
    for (int i = 0; i < fonts.length; i++) { 
     final Font font = fonts[i]; 
     final String name = font.getFontName(); 

     if (font.canDisplay('a') && 
     font.canDisplay('z') && 
     font.canDisplay('A') && 
     font.canDisplay('Z') && 
     font.canDisplay('0') && 
     font.canDisplay('1')) { 
     //System.out.println(" OK."); 
     } else { 
     File file = new File("c:\\Windows\\Fonts\\" + name + ".ttf"); 
     if(file.exists()) { 
      System.out.println("Bad Font: " + name); 
      file.delete(); 
     } 
     } 
    } 
    } 
} 

我假设它是一个文件权限冲突,但我不知道如何更改权限。我是否需要以管理员身份运行?

或者..你能告诉我如何打开坏的文件到浏览器窗口,以便我可以'全选'?

+0

您应该运行的应用程序作为管理员才能运行。顺便说一句,你为什么要删除一个字体?另外,根据您的操作系统,路径可能是错误的 – 2013-04-08 00:44:05

+0

根据JetBrains的客户支持,我的电脑有一些防止PhpStorm加载的字体。我该如何在命令行中输入以管理员身份运行? – Andrew 2013-04-08 00:51:03

+0

如果您正在通过IDE(NetBeans,Eclipse等)运行IDE,请以管理员身份运行IDE,方法是右键单击该exe并使用*以管理员身份运行*选项。如果您从控制台(cmd)运行此操作,请以管理员身份打开控制台并执行程序 – 2013-04-08 00:55:00

回答

1
if (font.canDisplay('a') && 
    font.canDisplay('z') && 
    font.canDisplay('A') && 
    font.canDisplay('Z') && 
    font.canDisplay('0') && 
    font.canDisplay('1')) { 
    //System.out.println(" OK."); 
    } else { 
    System.out.println("Bad Font: " + name); 
    File file = new File("c:\\Windows\\Fonts\\" + name + ".ttf"); 
    file.delete(); 
    } 

取消注释“糟糕的字体行”。运行应用程序时是否打印出任何内容?我怀疑不,因为虽然你可能不喜欢字体显示的方式,canDisplay可能会返回true。

或者,“新文件”,字符串构造可能导致不正确。我会尝试打印出来,并检查该文件的文件系统。

排序是这样的:

} else { 
    System.out.println("Bad Font: " + name); 
    String fn = "c:\\Windows\\Fonts\\" + name + ".ttf"; 
    System.out.println("Trying to delete: " + fn); 
    File file = new File(fn); 
    file.delete(); 
    } 
+1

这不会解决问题。 – 2013-04-08 00:53:34

+0

嗨皮特,我试了一下,但没有删除。它确实用正确的文件名和路径打印了'Bad Font'和'Trying to delete'。任何其他想法? – Andrew 2013-04-08 01:15:21

+0

首先,我会切,然后在一个dos窗口中执行: dir 。文件列表?如果没有,那么你没有正确的文件名。 如果有,可以手动删除文件吗? 如果您可以手动删除它,那么您需要在管理员模式下运行java应用程序。如果不是,则文件的权限可能被锁定。这是关于采取措施,导致你解决问题的方法。 – 2013-04-08 01:48:32