Java文件输入和输出

时间:2010-02-21 05:32:56

标签: java io robocode

我有以下方法,它意味着将信息附加到文件,但我得到以下错误。在方法中,我使用了继承自java.io.InputStream

的robocode API部分

文件和文件夹的所有权限似乎都很好,文件确实存在

static public void logInfo(String info) 
{        

    RobocodeFileWriter in;
    try {
        in = new RobocodeFileWriter("log.txt");
        in.append(info);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }       


}
  

SYSTEM:itc.solomon初始化期间发生错误   SYSTEM:java.security.AccessControlException:阻止itc.solomon访问:(java.io.FilePermission log.txt read):您只能读取自己的根包目录中的文件。   java.security.AccessControlException:阻止itc.solomon访问:(java.io.FilePermission log.txt read):您只能读取自己的根包目录中的文件。    在robocode.security.RobocodeSecurityManager.handleSecurityProblem(未知来源)    在robocode.security.RobocodeSecurityManager.checkPermission(未知来源)    在java.lang.SecurityManager.checkRead(SecurityManager.java:888)    在java.io.File.exists(File.java:748)    在robocode.RobocodeFileOutputStream。(未知来源)    在robocode.RobocodeFileOutputStream。(未知来源)    在robocode.RobocodeFileWriter。(未知来源)    at itc.CFile.logInfo(CFile.java:16)    at itc.solomon。(solomon.java:43)    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)    at java.lang.reflect.Constructor.newInstance(Constructor.java:532)    在java.lang.Class.newInstance0(Class.java:372)    在java.lang.Class.newInstance(Class.java:325)    在robocode.peer.proxies.HostingRobotProxy.loadRobotRound(未知来源)    在robocode.peer.proxies.HostingRobotProxy.run(未知来源)    在java.lang.Thread.run(Thread.java:636)

2 个答案:

答案 0 :(得分:2)

查看此示例: http://code.google.com/p/robocode/source/browse/robocode/trunk/robocode.samples/src/main/java/sample/SittingDuck.java

我认为getDataFile("log.txt")会为您提供合适的位置。

答案 1 :(得分:1)

我对这个问题进行了一些搜索。看来there's a bug in the robocode package, awkwardly solved by

while (!dataIsLoaded) {
   try {
       tryToReadData;
       dataIsLoaded = true;
   } catch (AnyException e) {}
}

这是解决问题的一种非常糟糕的方式,原因有很多(忽略异常,忙碌等待等)。更合理的方法是将robocode软件包降级为以前更稳定的版本。

See search results here