Java文件输入和输出

发布于 2024-08-21 23:24:55 字数 1791 浏览 2 评论 0 原文

我有以下方法,旨在将信息附加到文件中,但出现以下错误。在该方法中,我使用了 robocode API 的一部分,它继承自 java.io.InputStream

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

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();
    }       


}

系统: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.(​​来源未知) 在 itc.CFile.logInfo(CFile.java:16) 位于 itc.solomon。(solomon.java:43) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 在 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)

I have the below method which is meant to append information to a file but I get the error below. In the method I use parts of robocode API which inherits from java.io.InputStream

All the permissions on the files and folders seem fine and the file does exist

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: An error occurred during initialization of itc.solomon
SYSTEM: java.security.AccessControlException: Preventing itc.solomon from access: (java.io.FilePermission log.txt read): You may only read files in your own root package directory.
java.security.AccessControlException: Preventing itc.solomon from access: (java.io.FilePermission log.txt read): You may only read files in your own root package directory.
at robocode.security.RobocodeSecurityManager.handleSecurityProblem(Unknown Source)
at robocode.security.RobocodeSecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkRead(SecurityManager.java:888)
at java.io.File.exists(File.java:748)
at robocode.RobocodeFileOutputStream.(Unknown Source)
at robocode.RobocodeFileOutputStream.(Unknown Source)
at robocode.RobocodeFileWriter.(Unknown Source)
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)
at java.lang.Class.newInstance0(Class.java:372)
at java.lang.Class.newInstance(Class.java:325)
at robocode.peer.proxies.HostingRobotProxy.loadRobotRound(Unknown Source)
at robocode.peer.proxies.HostingRobotProxy.run(Unknown Source)
at java.lang.Thread.run(Thread.java:636)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

错々过的事 2024-08-28 23:24:55

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

我认为 getDataFile("log .txt") 将为您提供正确的位置。

See this sample:
http://code.google.com/p/robocode/source/browse/robocode/trunk/robocode.samples/src/main/java/sample/SittingDuck.java

I think getDataFile("log.txt") will give you proper location.

归属感 2024-08-28 23:24:55

我已经搜索了一些关于这个问题的信息。似乎robocode 包中存在一个错误,笨拙地解决了

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

由于多种原因(忽略异常、忙等待等),这是一种非常糟糕的解决问题的方法。更明智的方法是将 robocode 包降级到以前的、更稳定的版本。

在此处查看搜索结果

I've searched a bit about this problem. It seems that there's a bug in the robocode package, awkwardly solved by:

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

It's a quite awful way to solve the problems, for many reasons (ignoring exceptions, busy-waiting, etc.) A more sane way would be downgrading the robocode package to a previous, more stable version.

See search results here.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文