如何阅读文本文件中的其他行

时间:2014-03-18 07:24:41

标签: java file text

我有一项任务是创建一个"地图"这是一个包含房间的数组。在房间里有一些文物,你可以看,或检查并放入你的库存或背包"。您还可以在地图上保存和恢复展示位置,以及工件位置和广告资源。保存功能将其保存到包含位置,工件和库存的文本文件中。我遇到的问题是尝试从文本文件中获取工件数据以在程序上恢复。我没有加载位置的问题,但无法加载任何工件。在运行调试器时,它会跳过该行。这是我正在努力工作的代码。

 File fileRestore = new File("C:\\Users\\mike\\Desktop\\GCPU.txt");
                    try
                    {
                        FileReader reader = new FileReader(fileRestore);
                        BufferedReader buffer = new BufferedReader(reader);
                        String line = buffer.readLine();
                        while (line !=null)
                        {
                            String[] contents = line.split(",");
                            String key = contents[0];

                            if (key.equals("StartLocation"))
                            {
                                row = Integer.parseInt(contents[1]);
                                col = Integer.parseInt(contents[2]);
                            }

                            key = contents [1];
                            if (key.equals("Artifact"))
                            {
                                String name = contents [1];
                                row = Integer.parseInt(contents [2]);
                                col = Integer.parseInt(contents [3]);
                                if (name.equals("vending"))
                                        map.rooms[row][col].contents = map.vending;
                                if (name.equals("beaker"))
                                        map.rooms[row][col].contents = map.beaker;
                                if (name.equals("gameboy"))
                                        map.rooms[row][col].contents = map.gameboy;
                                if (name.equals("paper"))
                                        map.rooms[row][col].contents = map.paper;
                                if (name.equals("trees"))
                                        map.rooms[row][col].contents = map.trees;
                                if (name.equals("desk"))
                                        map.rooms[row][col].contents = map.desk;
                                if (name.equals("brewer"))
                                        map.rooms[row][col].contents = map.brewer;
                                if (name.equals("statue"))
                                        map.rooms[row][col].contents = map.statue;

                            }

这是我正在阅读的文本文件:

StartLocation,0,2 Artifact,Eerie statue,2,0 Artifact,A small redwood sprout,3,0 Artifact,Gameboy Color,0,1 Artifact,Lapdesk,1,1 Artifact,A piece of paper,2,1 Artifact,Industrial coffee maker,1,3

所以重申一下我的问题,我如何从文本中读取Artifact行以及StartLocation行?

感谢您抽出宝贵时间阅读本文。

3 个答案:

答案 0 :(得分:2)

您只从文件中读取一次。取代这两行:

String line = buffer.readLine();
while (line !=null)
...

有这样的事情:

String line = "";
while((line = buffer.readLine()) != null)
...

每次while循环迭代时,都应允许您读取下一行。

或者,您可以在line = buffer.readLine()循环的右大括号之前使用while。这种方法也是有效的,但是,根据我经历过的教程来判断,这种方法不太受欢迎。

答案 1 :(得分:0)

String line = buffer.readLine();

应该在while循环中。它只被执行一次。

虽然确保修改line的初始值和循环条件,以便循环开始。

祝你好运。

答案 2 :(得分:0)

  
      
  1. String line = buffer.readLine();将跳过第一行。
  2.   
  2.
       if (key.equals("StartLocation"))
          {   row = Integer.parseInt(contents[1]);
              col = Integer.parseInt(contents[2]);
          }

 will fail because key = " StartLocation". there is a space in your
 text file. use line=line.trim() to remove unnecessary characters.

 3. Your program will read only 1 line.