java - Android不创建本地文件

标签 java android

对我的 Android 代码感到悲伤。我真的很困惑为什么这不起作用。我正在尝试将 HashMap 保存到本地文件存储,但我什至无法让该文件存在。 该方法在程序开始时调用,以便稍后可以使用该文件。

调试宣布“不”...然后“仍然没有”,所以我假设它没有被创建,并且我没有看到任何异常(exception)。 显然我错过了一些东西。

   public LighManager(Context mContext) {
        this.mContext = mContext;


    File file = mContext.getFileStreamPath("RobLights.tmp");
    if (file.exists()){

        Log.d("Fileexists", "indeed");
    }
    else
    {
        Log.d("Fileexists", "Not");
        try {
            file = new File(mContext.getFilesDir(), "RobLights.tmp");
        }catch (Exception x ){

            Log.d(TAG, "Exception " +x.toString());
        }
    }

    if (file.exists()){

        Log.d("Fileexists", "now it dooes");
    }else{

        Log.d("Fileexists", "Still doesnt");

    }

上面的调用来自:

public class MyApplication extends Application {

private NetworkHostSocket mHostSocket = null;

public LightingSystem systemclass;
public LighManager mLighManager;


public MyApplication() {
    super();
}
  public void onCreate(){
    super.onCreate();
     mLighManager=new LighManager(this);
     mLighManager.readDataFromFile();

最佳答案

你有两个问题。

最重要的是您认为 new File(mContext.getFilesDir(), "RobLights.tmp") 创建了一个文件。它不是。它创建一个 Java File 对象,表示文件系统上的一个位置。如果您希望该文件存在,则需要使用 Java 文件 I/O 写入该 File 所指向的位置。

其次,您定义 file 两次,一次使用上述代码 fragment ,一次使用 mContext.getFileStreamPath("RobLights.tmp")。 IIRC,这些实际上确实解析到同一位置。但是,为了安全起见,我建议仅定义 file 一次。

关于java - Android不创建本地文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34728704/

相关文章:

java - 如何通过按下软键在软键盘中打开上下文菜单?

android - 如果其他视频/音频开始在android中播放,如何停止媒体播放器

添加资源的Android Studio编译错误

android - 可以在 Google Analytics 中为 Android 应用创建虚拟网页浏览吗?

java - 搜索算法(DFS、BFS、A 星等)。如何在没有 "freezing"的情况下更新 GUI(更新状态)?

java - 在 Spring @Transactional 中保存多个实体的 JPA 不回滚并启用 Exception.class 回滚

android - 如何以编程方式设置默认应用启动器?

android - 如何使用 Espresso 测试 Android 应用程序已关闭

java - 如何修改 JTextArea 中 Tab 键的行为?

java - 扩展 Java 内存映射字节缓冲区