【问题标题】:Calling OpenFileOutput inside a Button click listener in Android在 Android 中的按钮单击侦听器中调用 OpenFileOutput
【发布时间】:2015-12-20 04:37:06
【问题描述】:

我有一个带有按钮的简单应用程序。我在 MainActivity 中全局定义了一个 FileOutputStream。然后在 onCreate() 我初始化它。单击按钮时,我会打开一个新文件输出,例如:

outputStream = openFileOutput(文件名, Context.MODE_PRIVATE);
outputStream.write(string.getBytes()); outputStream.close();

对不起,如果这个问题听起来很愚蠢,但是按钮单击侦听器中的这段代码是否会在我每次单击按钮时创建一个新的不同文件?就像我单击该按钮 10 次一样,我在实际的应用程序文件目录中会有 10 个文件吗? 之所以出现这种担忧,是因为我意识到当我在内部存储设置中检查该应用程序时,它的大小会不断增加。 有什么方法可以确保仅在第一次单击按钮时才创建文件?就像尚未创建时才创建它一样。

谢谢。

【问题讨论】:

  • 经过几个小时分析我的应用程序中不断增加的缓存(我正在使用谷歌服务获取位置)我只能说这不是我的应用程序的错,所以它一定是由 Android 本身引起的。由于我的智能手机没有植根,我刚刚使用 Linux 终端中的 adb shell 程序检查了 /data/data 中生成的文件,例如:sudo adb shell "run-as com.example.package ls /data/data/com.example.package/file/",一切似乎都很好。

标签: android


【解决方案1】:

如果您的文件名保持不变,它将第一次创建文件,然后在随后的按钮单击时一次又一次地打开它。看看官方文档中的here

打开与此上下文的应用程序包关联的私有文件 写作。 如果文件不存在则创建文件

【讨论】:

    【解决方案2】:
    • 您只需要一个文件名,不需要任何其他名称 或
    • 您可以在重新创建之前使用检查文件退出,试试这个代码:

      文件 f = 新文件(文件名); //文件路径

      if (!f.exists()){ 
      
        //do your code to create new file
      
      }
      

    【讨论】:

      猜你喜欢
      • 2012-02-11
      • 1970-01-01
      • 1970-01-01
      • 2015-07-31
      • 1970-01-01
      • 1970-01-01
      • 2013-03-14
      • 2017-06-18
      • 1970-01-01
      相关资源
      最近更新 更多