【问题标题】:Android Deleting File From Storage OutputStreamAndroid 从存储输出流中删除文件
【发布时间】:2015-04-30 13:34:13
【问题描述】:

我正在尝试从存储中删除一个文件,但是当我这样做时它返回 true,因为它已被删除,但在下次启动时读出该文件,就好像它仍然存在一样:/

    package com.example.Mazer.Utilities;

import android.app.Activity;
import android.content.Context;
import android.util.Log;

import java.io.*;

public class ObjectSaver {

    public static void writeObjectToFile(Context c, Object object, String filename) {

        ObjectOutputStream objectOut = null;
        try {
            FileOutputStream fileOut = c.getApplicationContext().openFileOutput(filename, Activity.MODE_WORLD_READABLE);
            objectOut = new ObjectOutputStream(fileOut);
            objectOut.writeObject(object);
            fileOut.getFD().sync();

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (objectOut != null) {
                try {
                    objectOut.close();
                } catch (IOException e) {
                    Log.d("GameActivity", "Can't close objectOut ObjectOutputStream");
                }
            }
        }
    }

    public static void deleteObjectFromFile(Context c, String filename) {
        c.deleteFile( filename);
        //NOPE

        c.getApplicationContext().deleteFile(filename);
        //NOPE

        String s = c.getFilesDir().getAbsolutePath() + "/" + filename;
        c.deleteFile(s);
        //NOPE

    }


    public static Object readObjectFromFile(Context c, String filename) {

        ObjectInputStream objectIn = null;
        Object object = null;
        try {
            FileInputStream fileIn = c.getApplicationContext().openFileInput(filename);
            objectIn = new ObjectInputStream(fileIn);
            object = objectIn.readObject();
        } catch (FileNotFoundException e) {
            return null;
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } finally {
            if (objectIn != null) {
                try {
                    objectIn.close();
                } catch (IOException e) {
                    // do nowt
                }
            }
        }

        return object;
    }

}

如您所见,我已经尝试过数百万种方法中的几种,我什至尝试过覆盖文件。

我像这样从文件中读取:

maze = (Maze) ObjectSaver.readObjectFromFile(Splash.this, "currentMaze");

并且...我像这样保存到文件中..

ObjectSaver.writeObjectToFile(context, new Maze(this), "currentMaze");

【问题讨论】:

  • 你浏览过this链接吗?它的作品完美。

标签: android file directory storage internal


【解决方案1】:

这可能会有所帮助:

import java.io.File;


 public static void deleteObjectFromFile(Context c, String filename) {

      File file = new File(fileName);
      if (file.exists()) { 
         file.delete();
      } 

    }

【讨论】:

  • 文件 file = new File(c.getFilesDir().getAbsolutePath()+"/"+filename);文件.delete();
【解决方案2】:
boolean deleted = false;

File file = new File(selectedFilePath);
if (file.exists())
deleted = file.delete();

其中 selectedFilePath 是您要删除的文件的路径 - 例如: /sdcard/MyFolder/example.mp3

【讨论】:

  • 文件 file = new File(c.getFilesDir().getAbsolutePath()+"/"+filename);文件.delete();
  • 文件目录 = getFilesDir();文件 file = new File(dir, "my_filename");布尔删除 = file.delete();
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-06
  • 2021-07-07
  • 2017-02-01
相关资源
最近更新 更多