首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >文件-计数内部文件

文件-计数内部文件
EN

Stack Overflow用户
提问于 2019-01-18 22:03:32
回答 2查看 264关注 0票数 0

我是在Android编程的初学者。我想做一个类似于下面描述的apk:

  • 按下按钮
  • 整数1保存到txt文件中。
  • 如果我关闭apk并重新打开并再次按下按钮,我将得到txt文件的2号,这个过程重复(3,4,5...ect)。

我需要做的(在程序中):

  1. 如果不存在,则创建文件
  2. 看看是不是。文件中已经有了一些数字,并将该数字+1作为子文件,如果不存在(txt文件为空),则需要将整数值1添加到txt。文件。 下面是我的程序,我遇到了公共void ()的问题--当我使用log.d测试程序时总是显示空文件,但是我检查了txt。文件在设备文件资源管理器中,并在txt.file中有编号1。我还尝试使用BufferdReader (br.readLine())并获得相同的结果。我不知道问题在哪里..。

代码语言:javascript
复制
public class MainActivity extends AppCompatActivity {

    Button btn;
    private static int Counter = 0;
    private static final String FILE_NAME = "data.txt";
    private static String TAG="MainActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn = (Button) findViewById(R.id.button);

        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Counter++;
                Log.d(TAG, "onClick: counter "+Counter);
                saveChec();
                Lengt();
                //load();
                // subSu();
            }
        });
    }

    private void subSu() {

    }

    public void Lengt(){
        long length = new File(getFilesDir().getAbsolutePath() + FILE_NAME).length();
        if (length == 0){
            //get alvays empty..
            Log.d(TAG, "Buff: empty ");
            save(); //add value 1 to txt file
            
        }else{
            Log.d(TAG, "Buff: full");
        }
    }

    public void saveChec() {

        FileOutputStream fos = null;

        try {
            fos = openFileOutput(FILE_NAME, MODE_PRIVATE);
            Log.d(TAG, "saveChec: crated file ");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } finally {
            if (fos != null) {
                try {
                    fos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        // return;

    }

    public void load() {

        FileInputStream fis = null;

        try {
            fis = openFileInput(FILE_NAME);
            InputStreamReader isr = new InputStreamReader(fis);
            BufferedReader br = new BufferedReader(isr);
           //get alvays null
            if (br.readLine() == null) {
                Log.d(TAG, "load: empty file ");
                fis.close();
                save();
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (fis != null) {
                try {
                    fis.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    private void save() {

        FileOutputStream fos = null;

        try {
            fos = openFileOutput(FILE_NAME, MODE_PRIVATE);
            int number = 1;
            String numberAsString = Integer.toString(number);
             fos.write(numberAsString.getBytes());
            Log.d(TAG, "save: numberAsString "+numberAsString);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (fos != null) {
                try {
                    fos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
       // return;
    }
}

谢谢你的回答!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-19 00:40:47

请使用此代码:-

代码语言:javascript
复制
public void SaveFile()
{
    try {
            //Getting Internal Storage
            File file = new File(Environment.getExternalStorageDirectory(),"");
            File dfile = new File(file+"/data.txt");
            FileWriter write = null;
            //if File Does Exists
            if (!dfile.exists()) {
                write = new FileWriter(file+"/data.txt");
                write.write("1");
                write.close();
            }
            else{
                FileReader read = new FileReader(dfile);
                BufferedReader br = new BufferedReader(read);
                String snum = br.readLine();
                if(snum!=null) {
                    //Converting Sring to Integer
                    int num = Integer.parseInt(snum);
                    num++;
                    write = new FileWriter(file+"/data.txt");
                    write.write(String.valueOf(num));
                    write.close();
                }
                else
                {                    
                    write = new FileWriter(file+"/data.txt");
                    write.write("1");
                    write.close();
                }
            }
        }catch (IOException ex){}
}

将这些权限添加到报表文件中:-

代码语言:javascript
复制
<uses-permission android:name="READ_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="WRITE_EXTERNAL_STORAGE"></uses-permission>
票数 0
EN

Stack Overflow用户

发布于 2019-01-19 00:42:22

你一定要用文件吗?我会使用Shared Preferences来存储这个值,因为它只是一个原始值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54262012

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档