2012-09-19 65 views
1

我正在尝试创建一个缓冲阅读器,通过聊天发表演讲,意图让说明long语句变得更容易。我有这个缓冲阅读器听到,它大部分的作品,但它只读最后一行,其他一切工作完全正常。代码中哪里出了问题?这里的参考是:(为了澄清,“eggtime”是一个延迟的布尔值)我的Minecraft缓冲阅读器只能读取最后一行

static File waffles = new File(Minecraft.getMinecraftDir(),“speech.txt”);

public static void speechedo(String args) 
{ 


    if(waffles.exists()) 
    { 
     @SuppressWarnings("resource") 
     BufferedReader read = null; 
     try { 
      read = new BufferedReader(new FileReader(waffles)); 
     } catch (FileNotFoundException e) { 

      e.printStackTrace(); 
     } 
     String notataco; 
     if (eggtime){ 
     try { 
      for(int i = 0; (notataco = read.readLine()) != null; i++) 
      { 

       speechmakerchat = notataco; 


      } 
     } catch (IOException e) { 

      e.printStackTrace(); 
     } 
     } 

    }else{ 
     return;} 

    } 

回答

0

在行

speechmakerchat = notataco; 

你到最后一行替换的speechmakerchat内容,丢弃先前读取值。你需要连接新的数据到旧的:

speechmakerchat += notataco; 

顺便说一下,你有...有趣的...命名约定为你的变量。

+0

当我这样做,它堵塞整个文件成一行,speechmakerchat是一个字符串,告诉客户端在聊天中说什么,当我尝试这个,它给了我一个错误,说聊天消息太长。我怎样才能让它一次读一行,然后再次触发下一行? – getynge

+0

对不起,但要回答这个问题,我需要更多地了解它周围的API。 – Philipp

+0

文字或原始码本身? 我可以在文本中告诉你这一点,speechmakerchat是一个字符串,无论在这个字符串中是通过基于tick的延迟发送的,该延迟每180次触发就会激活一次,当这180次触发发生时,它切换一个布尔值,聊天消息。 – getynge

0

我为我的世界缓冲读者仅读取最后一行

不,你的缓存读取器读取每行。但是,你扔掉了除最后一行之外的所有东西。

你的异常处理也很差。在构造BufferedReader的IOException之后,您不应该允许该方法继续。大部分你的catch块都在错误的地方:它们应该是所有的主代码。