对我的 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/