gpt4 book ai didi

java - BufferedReaders 和 InputStreamReaders 的 IOException

转载 作者:行者123 更新时间:2023-11-29 07:04:39 25 4
gpt4 key购买 nike

我正在 retrofit Minicraft ,我在使用 BufferedReader 时遇到了一些麻烦。

所以在我的 mod 中,我有一个名为 FuncResource 的类,我在其中定义了一种在使用项目时执行自定义方法的方法。
Resource vanilla 类中,我定义了多个这种类型的对象。例如,可以让您更改游戏模式的控制台对象。
这是我在控制台项目类中使用的 interact 方法:

public boolean interact(Tile tile, Level level, int x, int y, Player player, int direction)
{
InputStreamReader isr = new InputStreamReader(System.in);

BufferedReader reader = new BufferedReader(isr);

String input = "";

System.out.print("> ");

try
{
input = reader.readLine();
reader.close();
}
catch(IOException e)
{
System.out.println("Input error... :/");
}

String[] commandList = input.split(" ");

if(commandList[0].equals("gamemode"))
{
player.gamemode = Integer.parseInt(commandList[1]);
return true;
}

return false;
}

现在问题来了:使用控制台项目一次,没问题。我改变了我的游戏模式。然而,当我之后每次使用它时,它总是抛出一个 IOException。每一次。

难道我做错了什么?我是否以某种方式搞砸了输入?请帮助 - 我已经阅读了 JavaDocs 但他们没有帮助,而且我是 Java 的业余爱好者。
如果您需要更多信息,请询问。

编辑:我听取了人们的建议并删除了 reader.close(); 代码。但是,我再次尝试并打印了这个堆栈跟踪:

java.io.IOException: Stream closed
at java.io.BufferedInputStream.getBufIfOpen(BufferedInputStream.java:162)
at java.io.BufferedInputStream.read(BufferedInputStream.java:325)
at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:283)
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:325)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:177)
at java.io.InputStreamReader.read(InputStreamReader.java:184)
at java.io.BufferedReader.fill(BufferedReader.java:154)
at java.io.BufferedReader.readLine(BufferedReader.java:317)
at java.io.BufferedReader.readLine(BufferedReader.java:382)
at com.mojang.ld22.item.resource.funcitems.ConsoleItem.interact(ConsoleItem.java:27)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.mojang.ld22.item.resource.FuncResource.interactOn(FuncResource.java:31)
at com.mojang.ld22.item.ResourceItem.interactOn(ResourceItem.java:53)
at com.mojang.ld22.entity.Player.attack(Player.java:177)
at com.mojang.ld22.entity.Player.tick(Player.java:118)
at com.mojang.ld22.level.Level.tick(Level.java:274)
at com.mojang.ld22.Game.tick(Game.java:221)
at com.mojang.ld22.Game.run(Game.java:165)
at java.lang.Thread.run(Thread.java:744)

最佳答案

try
{
input = reader.readLine();
reader.close();
}
catch(IOException e)
{
System.out.println("Input error... :/");
}

不要关闭此阅读器,因为它包含应保持打开状态的 System.in

关于java - BufferedReaders 和 InputStreamReaders 的 IOException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21225220/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com