【问题标题】:Files in the SD card are disappearedSD 卡中的文件消失
【发布时间】:2025-12-22 07:05:16
【问题描述】:

现在我正在使用: String dir = Environment.getExternalStorageDirectory().getAbsolutePath(); File QRCode = new File(dir + File.separator + "QRCode.txt");

QRCode.txt 文件中的记录会在几天/几小时后被删除。我不知道为什么。 这可能是什么原因?如何保护我的记录,以免它们从文件 QRCode.txt 中删除?

【问题讨论】:

  • Tal - 有更新吗?该解决方案对您有用吗?
  • 我已经用更多信息更新了我的答案,我希望你现在应该能够摆脱这个问题。如果有任何进一步的问题/疑问,请随时发表评论。
  • 当我使用 File QRCode = new File("/sdcard/QRCode.txt");而不是 String dir = Environment.getExternalStorageDirectory().getAbsolutePath(); File QRCode = new File(dir + File.separator + "QRCode.txt");是不是这个原因导致 QRCode.txt 的所有数据都消失了?
  • 不,这不是原因。内容消失的原因不是我在更新中提到的以附加模式打开文件。更新后的解决方案对您有用吗?
  • 我在使用附加模式时仍然遇到问题: FileWriter writer = new FileWriter(QRCode, true);而不是 FileWriter writer = new FileWriter(QRCode);记录被创建了很多次,而不是只创建一次。我需要只创建一次而不是多次创建记录。我该怎么办?

标签: java android qr-code


【解决方案1】:

可以通过如下方式获取到目录的路径:

String dir = Environment.getExternalStorageDirectory().getAbsolutePath();

然后,您需要将文件的路径(包括其名称)添加到 dir 以创建文件的完整路径,例如

File QRCode = new File(dir + File.separator + path-to-your-file-on-SD-card);

例如

File QRCode = new File(dir + File.separator + QRCode.txt);

另外,请确保在打开文件时以 append 模式打开文件以附加一些内容,例如如果你使用FileWriter,为了以追加模式打开它,你必须将true传递给它的构造函数,如下所示:

FileWriter writer = new FileWriter(QRCode, true);

但是,如果要更改文件中的某些内容,则不得以附加模式打开文件。相反,您必须使用以下构造函数打开它(或将false 传递给上述构造函数),将内容读入一些变量,根据要求处理和更改内容,然后将更改的内容写回到文件中。

FileWriter writer = new FileWriter(QRCode);

旁注:始终遵循Java naming conventions,例如QRCode 应命名为 qrCode

【讨论】:

  • 现在我正在使用:String dir = Environment.getExternalStorageDirectory().getAbsolutePath(); File QRCode = new File(dir + File.separator + "QRCode.txt"); QRCode.txt 文件中的记录会在几天/几小时后被删除。我不知道为什么。这可能是什么原因?我怎样才能保护我的记录,以便它们不会从文件 QRCode.txt 中删除?
  • @tal - 到目前为止,您使用的所有方法都不是其背后的原因。还有其他一些事情(例如,一些后台工作或病毒或经过彻底分析后您将能够知道的事情)。
  • 我可以将文件写入我的屏幕内存而不是 sd 卡吗?我的意思是我可以将 QRCode.txt 写入内存中不是 sd 卡的另一个位置吗?