如何设置和从java中的文件中取一个整数

时间:2013-11-28 19:29:03

标签: java integer save

所以这是一个非常简单的问题。我一直在努力研究它,是的,我稍微找到了一些答案,但我无法弄清楚它是如何工作的,所以我来到这里。

我在java(pong)中制作一个简单的游戏,他们是一个高分整数,我希望能够从文件中保存和加载(我听过很多关于使用txt文件的信息,所以可能是这样,但是我也听说过使用xml,我相信它是什么,但我没有那么多考虑。我该怎么编程呢?

感谢所有回答的人。

PS

我已经查看了这段代码,但我不明白它是如何工作的

String strFilePath = "C://FileIO//WriteInt.txt";

try {
  //create FileOutputStream object
  FileOutputStream fos = new FileOutputStream(strFilePath);


  DataOutputStream dos = new DataOutputStream(fos);

  int i = 100;

  dos.writeInt(i);

  dos.close();

} catch (IOException e) {
  System.out.println("IOException : " + e);
}

3 个答案:

答案 0 :(得分:2)

最简单的方法是创建一个文件,即

将分数写入文件,例如

String user = "John";
int score = 100;
f = new BufferedWriter(new FileReader(filepath));
f.write(user + "=" + score); // assuming "=" is not inside the user name
f.close();

然后在需要时从文件中读取,例如

f = new BufferedReader(new FileReader(filepath));
String line = f.readLine().trim();
String[] temp = line.split("="); // now temp is of the form ["John", "100"]
String user = temp[0];
int score = Integer.parseInt(temp[1]);
f.close();

答案 1 :(得分:2)

我认为你可以将这个对象编码解析成一个文件,但它不会是一个xml,它将是一个自定义文件,只有你的应用程序才能打开

 public void save(Integer ... integersToEncode){

       try{
         ObjectOutputStream output = new ObjectOutputStream(new FileOutputStream (new File(/*yourFileName*/)));
         for(Integer encoding : integersToEncode)
             output.writeObject(encoding);

         output.close();

       }
       catch(Exception e){
         //What do you want to do if the program could not write the file
       }


    }

阅读

 public Integer[] read(int size){


    Integer[] objects = new Integer[size];
       try{
         ObjectInputStream input = new ObjectInputStream(new FileInputStream (new File(/*yourFileName*/)));
         for(int i = 0; i < size ; i++)
             objects[i] = (Integer)input.readObject();
        input.close();

       }
       catch(Exception e){
         //What do you want to do if the program could not write the file
       }

       return objects;
    }

答案 2 :(得分:0)

也许您对您发布的原始代码将char'd'打印到输出文件的方式感到困惑。您可能知道这是字符的ASCII值。对代码进行以下修改使其按照您原样的方式工作:

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;


public class Game {

    public static void main(String[] args) throws IOException {

        Game game = new Game();
        game.writeHighScore();

    }

    public void writeHighScore() throws IOException{

    String strFilePath = "C:/Users/User/workspace/HighScore.txt";   

    FileInputStream is = null;
    DataInputStream dis = null;
    FileOutputStream fos = null;
    DataOutputStream dos = null;

    try
    {
      //create FileOutputStream object
        fos = new FileOutputStream(strFilePath);

        dos = new DataOutputStream(fos);

      int i = 100;

      dos.writeInt(i);

      System.out.println("New High Score saved");

      dos.close();

    // create file input stream
      is = new FileInputStream(strFilePath);

      // create new data input stream
      dis = new DataInputStream(is);

      // available stream to be read
      while(dis.available()>0)
      {
         // read four bytes from data input, return int
         int k = dis.readInt();

         // print int
         System.out.print(k+" ");
      }
   }catch(Exception e){
      // if any error occurs
      e.printStackTrace();
   }finally{

      // releases all system resources from the streams
      if(is!=null)
         is.close();
      if(dis!=null)
         dis.close();
    if(fos!=null)
         fos.close();
    if(dos!=null)
         dos.close();
   }
}

}