在Android中的按钮单击侦听器中调用OpenFileOutput

在Android中的按钮单击侦听器中调用OpenFileOutput,android,Android,我有一个带按钮的简单应用程序。我在MainActivity中全局定义了一个FileOutputStream。然后在onCreate()上初始化它。单击按钮时,我打开一个新的文件输出,如下所示: outputStream=openFileOutput(文件名,Context.MODE\u PRIVATE) write(string.getBytes());outputStream.close() 抱歉,如果这个问题听起来很愚蠢,但是每次我单击按钮时,按钮click listener中的代码是否会创

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

outputStream=openFileOutput(文件名,Context.MODE\u PRIVATE)
write(string.getBytes());outputStream.close()

抱歉,如果这个问题听起来很愚蠢,但是每次我单击按钮时,按钮click listener中的代码是否会创建一个新的不同文件?比如,如果我点击该按钮10次,我会在实际的应用程序文件目录中有10个文件吗? 这种担心是因为我在检查内部存储设置时意识到应用程序的大小一直在增加。 有没有办法确保只需单击第一个按钮即可创建文件?就像只有在它还没有被创建的时候才创建它


谢谢。

如果您的文件名保持不变,它将第一次创建该文件,然后在随后的按钮单击中反复打开该文件。请查看官方文档:

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

  • 您只需要一个文件名,而不需要任何其他名称 或
  • 您可以在再次创建文件之前使用“检查文件退出”,请尝试以下代码:

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

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

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