2016-10-20 37 views
0

如果我单击某个按钮,将创建一个文件并将整数值写入该文件。如果我点击另一个按钮,该值将从文件中提取出来。 如果关闭应用程序并重新启动,则无法找到该文件。 是因为该文件是在de android:onCLick方法中创建的吗?Android Studio:应用程序重新启动后无法打开文件

这里有两种方法:

写:

public void buttonAddClick (View view){ 

    file = new File(directory, "file" + c.getDisplayName(Calendar.MONTH, Calendar.LONG, Locale.ENGLISH) + ".txt"); 
    if (!file.exists()) { 
     try { 
      file.createNewFile(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
    try { 
     BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(file,true)); 
     bufferedWriter.append(editAm.getText()); 
     bufferedWriter.append("\n"); 
     bufferedWriter.close(); 
     editAm.setText(null); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

} 

阅读:

public void buttonShowClick(View view) { 


    try { 
     BufferedReader bufferedReader = new BufferedReader(new FileReader(file)); 
     zwischensumme = 0; 
     String line; 

     while ((line = bufferedReader.readLine()) != null) { 
      zwischensumme += Double.parseDouble(line); 
      line = ""; 
     } 
     bufferedReader.close(); 

    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
     catch (NumberFormatException e){ 
     e.printStackTrace(); 
     file.delete(); 
    } 

} 
+0

logcat说什么? – Shmuel

+0

什么是存储文件的“目录”?内部存储还是外部的,还是临时的? –

+0

@Kilanny它是内部的:新的文件(getFilesDir()+“/”,MP); – Vale

回答

0

您可能会对您的文件变量感到困惑。它似乎是你班级的一个实例变量。它正在buttonAddClick中被检测。当你现在再次运行你的应用程序时,它不会被实例化,而是在buttonShowClick中使用(就我们所见)。

我想它是空的。

1

看起来你可能会得到一个NumberFormatException
检查stacktrace以查看是否进入catch (NumberFormatException e)块。
如果你属于这个块,那么这个文件确实删除,因为你的catch块:

catch (NumberFormatException e){ 
     e.printStackTrace(); 
     file.delete(); 
    } 

而且赫尔曼Klecker是正确的。你根据日期时间命名你的文件。
您不显示如何检索读取部分中的文件。它是基于文件名吗?

正如你可能不知道文件名(由于日期/时间关系)做一些像这样的的onResume if (file == null)

File directory = new File("/path/to/directory"); 
File[] foundFiles = directory.listFiles(new FilenameFilter() { 
    public boolean accept(File dir, String name) { 
     return name.startsWith("file"); 
    } 
}); 

if (!foundFiles.isEmpty()) { 
    file = foundFiles[0]; 
} 

这样,如果第一个文件名以“文件”开始,它将被使用

+0

感谢您的回复,但它并未陷入NumberFormatException Block ... – Vale

相关问题