如何创建一个唯一的文件名?

时间:2014-08-21 14:54:03

标签: android file time

我想创建一个唯一的singular文件,我将其保存到Android设备上的SD卡中。

该文件当前记录了记录为every second.

的游戏会话中的值

目前的问题是文件的名称创建如下:

Time t= new Time();
            t.setToNow();
            int timeFileMinute= t.minute;
            int timeFileDate= t.yearDay;
            int timeFileYear= t.year;

            long timestamp=System.currentTimeMillis();

            //creating file name
            String fileName= "MathsRaw-" +timeFileMinute + timeFileDate + timeFileYear + android.os.Build.SERIAL;

问题在于,这会创建一个新文件each minute,而不仅仅是整个游戏期间的文件。

即。如果游戏是在09.5409.55上播放的,则会有two个不同的文件,我不想要这些文件。

我可以使用什么来创建唯一的singular文件?

请注意,我尝试使用timestamp,但这使情况变得更糟。

完整的writeToFile方法:

public void writeToFileRawData(String data){

            Time t= new Time();
            t.setToNow();
            int timeFileMinute= t.minute;
            int timeFileDate= t.yearDay;
            int timeFileYear= t.year;

            long timestamp=System.currentTimeMillis();

            //creating file name
            String fileName= "MathsRaw-" +timeFileMinute + timeFileDate + timeFileYear + android.os.Build.SERIAL;


            //creating the file where the contents will be written to
            File file= new File(dir, fileName + ".txt");

            FileOutputStream os;

            try{

                boolean append= true;

                os= new FileOutputStream(file, append);

                String writeMe =data + "\n";

                if(isHeader2){
                    os.write(header2.getBytes());
                    isHeader2=false;
                }

                os.write(writeMe.getBytes());

                os.close();
            } catch(FileNotFoundException e){

                e.printStackTrace();
            }catch(IOException e){

                e.printStackTrace();
            }

        }

3 个答案:

答案 0 :(得分:2)

public class MYValueRecorder {
        String fileName;
        myValueRecorder () {
            Time t= new Time();
            t.setToNow();
            int timeFileMinute= t.minute;
            int timeFileDate= t.yearDay;
            int timeFileYear= t.year;

            long timestamp=System.currentTimeMillis();

            //creating file name
            fileName= "MathsRaw-" +timeFileMinute + timeFileDate + timeFileYear + android.os.Build.SERIAL;
        }

        public void writeToFileRawData(String data) {
            // do your stuff here, just don't initialize fileName again.
        }
    }

使用它,在会话开始时初始化一个新类,然后只使用writeToFileRawData方法来编写数据。

答案 1 :(得分:0)

在开始时创建文件并将名称存储在变量中,然后保存到该文件。

答案 2 :(得分:0)

根据我对你的问题的理解,让我们说如果我玩你的游戏3次,应该有3个独特的文件,其中包含我所玩的每个会话的信息。如果我在这里错了,请纠正我。

我不确定,但我认为你在游戏循环或某种循环中调用writeToFileRawData(data)方法,这就是为什么它可能会创建多个文件而不是一个。

想法是在您的Activity的OnCreate()方法中创建一个新文件,然后您可以在游戏进行时写入相同的文件。 OnCreate()将仅在开始时调用,因此每次创建新文件时,您都可以使用该文件中的时间戳保存数据。