【问题标题】:Delete file android删除文件安卓
【发布时间】:2023-03-31 03:00:01
【问题描述】:

我正在尝试删除一个文件,但它不起作用。我不知道为什么。这是我的函数调用。 String olaola2 都有 mozi 虽然你可以看到我在 ola 行执行后删除了文件。我希望ola2 给我null

    OfflineDataFiles dataFiles = new  OfflineDataFiles();
    dataFiles.writeToFile("mozi", getApplicationContext(), 1);
    String ola =dataFiles.readFromFile(getApplicationContext(), 1);
    boolean answer=dataFiles.DeleteFile(1);
    String ola2 =dataFiles.readFromFile(getApplicationContext(), 1);

删除文件:

public boolean DeleteFile(int filetype)
{
    File f = new File("myfile.txt");
    boolean ans= f.delete();
     return ans;
}

有什么问题?

【问题讨论】:

  • 那是你告诉我们的 - 什么是问题?如果您说删除后仍然可以从文件中读取,这实际上是预期的行为 - 删除的文件实际上不会变得不可访问,直到它的最后一个文件句柄关闭。即使这样,尝试从关闭的文件句柄中读取也不一定在所有实现中都有定义的行为。
  • @Chris Sratton ,我实际上想清空文件,以便其中没有数据。所以这就是我试图删除它的原因。但正如我在上面最后一句话中所说的,我期待最后一个读取函数返回 null,因为我调用了 DeleteFile()。如何在这里关闭最后一个文件句柄?我认为 File 对象在函数范围内。它应该在函数返回 no 后被删除?

标签: java android file file-io


【解决方案1】:

您的myfile.txt 没有存储路径

应该是这样的

File sdCard = Environment.getExternalStorageDirectory();   
String path = sdCard.getAbsolutePath() + "/yourfolder/" ;
File f = new File(path +"myfile.txt");
f.delete();

【讨论】:

  • @Mj1992 你的删除没有指定位置
【解决方案2】:

删除宽度正确的方法:

File file = new File(selectedFilePath);
                boolean deleted = file.delete();

selectedFilePath 例如:/sdcard/download/curse.txt

最好的。

【讨论】:

    【解决方案3】:

    FileChannel.truncate

    public boolean DeleteFile(int filetype) {
        File f = new File("myfile.txt");
        FileChannel outChan = new FileOutputStream(f, true).getChannel();
        outChan.truncate(0);
        outChan.close();
    }
    

    发件人:this 创建对 myfile.txt 的引用,而不是将其截断为 0 字节。您将能够访问它,但它的内容可能已经消失了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-19
      • 1970-01-01
      相关资源
      最近更新 更多