Ich versuche, eine grundlegende App zu erstellen, wo ich Text in die App eingeben, dieser Text benennt eine Textdatei, dann fügt die App zusätzlichen Text in die Datei. Wenn bereits eine Textdatei mit dem gleichen Namen existiert, möchte ich "Datei existiert" ausgeben. Im Moment von dem, was ich sehen kann, funktioniert die Überprüfung, ob eine Datei mit dem gleichen Namen bereits existiert. Kann jemand sehen warum? Von dem, was ich sehe, sollte es funktionieren. Hier ist der Code:Versuchen, zu überprüfen, ob Textdatei mit dem gleichen Namen bereits erstellt wurde
package com.example.user.filetest;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import java.io.File;
public class MainActivity extends AppCompatActivity {
FileUtility myFile = new FileUtility();
private File root;
private File file;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
final EditText enter = ((EditText) findViewById(R.id.editText));
final TextView show = ((TextView) findViewById(R.id.textView));
Button b = ((Button) findViewById(R.id.button));
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final String s = enter.getText().toString();
file = new File(root, "//" + s);
if (file.exists()) {
show.setText("File Exists");
}
else {
myFile.createFile(getApplicationContext(), s);
myFile.writeLine("test");
show.setText(myFile.readAll());
}
}
}
);
}
package com.example.user.filetest;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import android.content.Context;
import android.os.Environment;
import android.util.Log;
import android.content.*;
public class FileUtility {
private File root;
private File file;
public FileUtility() {
root = Environment.getExternalStorageDirectory();
}
public void createFile(Context context, String fileName) {
try {
if (root.canWrite()) {
file = new File(root, "//" + fileName);
if (!file.exists()) {
file.createNewFile();
}
}
else
{
file = new File(context.getFilesDir(), "//" + fileName); // File(root, "//" + fileName);
if (!file.exists()) {
file.createNewFile();
}
}
} catch (IOException e) {
Log.e("Error", "fail to create a new file");
}
}
public String readAll() {
StringBuilder returnString = new StringBuilder();
try {
BufferedReader in;
FileReader datawriter = new FileReader(file);
in = new BufferedReader(datawriter);
if (file.exists()) {
String str = null;
while((str=in.readLine())!=null)
{
returnString.append(str + "\n");
}
}
in.close();
} catch (IOException e) {
Log.e("Error", "fail to write file");
}
return returnString.toString();
}
public void writeLine(String message) {
try {
BufferedWriter out;
FileWriter datawriter = new FileWriter(file,true);
out = new BufferedWriter(datawriter);
if (file.exists()) {
out.write(message + "\n");
out.flush();
}
out.close();
} catch (IOException e) {
Log.e("Error", "fail to write file");
}
}
}
wo die "root" Datei in Ihrem MainActivity initialisiert? – Opiatefuchs
Sie schreiben in Ihrer onClick-Methode: file = new File (root, "//" + s); <- aber zu diesem Zeitpunkt ist "root" null ... nur ein Copy/Paste-Problem? – Opiatefuchs
Hey Joe, was ist der Fehler, den du bekommst, den Code einfügend, den ich zur Verfügung stellte? Wenn möglich, folgen Sie bitte diesen Schritten :) 1> Überprüfen Sie in Ihrer Erstellungsdatei, wo Sie eine Datei im Root- oder internen Speicher erstellen, indem Sie einen Breakpoint setzen :) und sobald Sie feststellen, wo Sie erstellen, überprüfen Sie im gleichen Ordner für die Datei :) Es ist nichts falsch in Ihrem Code :) möglicherweise überprüfen Sie falsche Ordner –