如何从文件中读取ascii chars到int变量

时间:2013-01-10 18:15:48

标签: java ascii

我为我正在制作的游戏制作了一个java class Levels 。为了使其快速阅读并使代码简单,数据采用ascii字符。问题是该类似乎没有执行。这可以进行一些修改吗?

这就是我所说的:

class G
    {        
        /* Variables */

        public G()
            {
                addKeyListener(new keys());
                setPreferredSize(new Dimension(w, h));
                setFocusable(true);
                Levels l = new Levels(1);
                System.out.print(l.blocks);

            }
        /* Code */
    }

这就是上课。

class Levels
    {
        int blocks, bl;
        int[] alt, bgc, gc;
        private int k;

        public Levels(int level)
             {
                try
                    {
                        FileInputStream levelfile = new FileInputStream("levels/level/" + level + ".lvl");
                        Scanner ls = new Scanner(levelfile);
                        this.bl=((int)ls.nextByte())-32;
                        this.blocks=(int)ls.nextByte()-32;
                        for(k=0; k<6; k++)
                            {
                                this.bgc[k]=((int)ls.nextByte()-32)*2;
                            }
                        for(k=0; k<6; k++)
                            {
                                this.gc[k]=((int)ls.nextByte()-32)*2;
                            }
                        for(k=0; k<blocks; k++)
                            {
                                this.bgc[k]=((int)ls.nextByte()-32)*2;
                            }
                    }
                catch(FileNotFoundException error)
                    {
                        System.out.print("Level not found..." + error);
                    }
            }
    }

1 个答案:

答案 0 :(得分:0)

请出于此目的使用DataInputStream / DataOutputStream。它会解决你的想法中的很多问题。

UPD: http://docs.oracle.com/javase/tutorial/essential/io/datastreams.html

UPD-2 我不建议您使用DataInputStream阅读文本文件。我建议您不要使用文本(ascii)文件表示。

UPD-3 好的。如果您还想读/写文本文件,那么有几个建议。 1)根据您的读取文件代码,您不要在书面值之间使用任何分隔符。不是吗?最简单的方法是使用回车,即在新行上写下每个值。

2)在这种情况下,使用BufferedReader

读取此类文件可能会更方便
FileInputStream fis = new FileInputStream('... your path ...');
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader br = new BufferedReader(isr);

String line;

line = br.readLine();
this.bl = Integer.parseInt(line);

line = br.readLine();
this.blocks= Integer.parseInt(line);

... and so on

br.close();