Die Prüfung, ob eine Datei Leer ist in Android
Dies ist mein code-Beispiel. Der code ist ziemlich lang, nur um zu testen, ob eine Datei leer ist, und dann, wenn es nicht ist, schreiben Sie es auf. So oder so, die Zeile if (!(data.equals("")) && !(data.equals(null)))
funktioniert nicht und selbst wenn die Datei leer ist, es geht immer noch durch die Warnung.
FileInputStream fIn = null;String data = null;InputStreamReader isr = null;
try{
char[] inputBuffer = new char[1024];
fIn = openFileInput("test.txt");
isr = new InputStreamReader(fIn);
isr.read(inputBuffer);
data = new String(inputBuffer);
isr.close();
fIn.close();
}catch(IOException e){}
//this is the check for if the data inputted from the file is NOT blank
if (!(data.equals("")) && !(data.equals(null)))
{
AlertDialog.Builder builder = new AlertDialog.Builder(Main.this);
builder.setMessage("Clear your file?" + '\n' + "This cannot be undone.")
.setCancelable(false)
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
EditText we = (EditText)findViewById(R.id.txtWrite);
FileOutputStream fOut = null;
OutputStreamWriter osw = null;
try{
fOut = openFileOutput("test.txt", Context.MODE_PRIVATE);
osw = new OutputStreamWriter(fOut);
osw.write("");
osw.close();
fOut.close();
we.setText("");
}catch(Exception e){}
}
})
.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();
}
Also, wenn jemand hat eine Art von Kurzschluss bis dieses Codes, ich wäre dankbar!
- stackoverflow.com/questions/7190618/... Haben Sie einen Blick auf dieser post
- Danke für den link. Es ist gut und sollte funktionieren, aber es funktioniert nicht 🙁
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn eine Datei leer (ohne Inhalt) und Ihre Länge ist 0. Die Länge gibt auch 0, wenn Sie nicht existieren; wenn dies eine notwendige Unterscheidung können Sie überprüfen, ob die Datei vorhanden ist, mit der
exists
Methode.Der gegenwärtige Ansatz nicht funktioniert, weil
inputBuffer
ist ein array von 1024 chars und strings erstellt, von der es auch 1024 chars, unabhängig davon, wie viele chars wurden erfolgreich aus der Datei gelesen.openFileOutput
ist ein Android-API-Funktion, ich hatte angenommen, es war etwas, das Sie selber geschrieben haben. Es erstellt die Datei in einem bestimmten Verzeichnis, die Sie erhalten können, vongetFilesDir
, und es gibt eine andere API-Funktion, um das File-Objekt mit dem vollständigen Pfad. Überprüfen Sie die Aktualisierung.File f = new File(getFilesDir(), "test.txt");
funktioniert! undFile f = getFileStreamPath("test.txt");
funktioniert auchVersuchen, viel Glück !
File f = new File(sdcard, "/yourfile");
, dann wäre es nicht immer existieren, weil Sie gerade erst erstellt?Da Sie mit
openFileInput("test.txt")
zurückgibtFileInputStream
versuchenIch habe kein Java NIO Erfahrung.