Ich führe diesen Code viel Zeit und schließlich kann ich nicht herausfinden, was falsch ist, ich benutze beide Berechtigungen für das Lesen/Schreiben in Manifest, aber schließlich gibt es nur diesen Fehler jedes Mal, wenn ich laufe Dieses Projekt im android Studio:.FileNotFoundException in der Verwendung von FileOutputStream
11-13 20: 35: 03.097 3691-3691/ir.atiafar.files W/System.err: java.io.FileNotFoundException:/storage/emulierten/0/mydir/k.txt: open fehlgeschlagen: ENOENT (Keine solche Datei oder das Verzeichnis)
nach Zeile 62: tv.setText (f.getCanonicalPat h()); dem der Ausgang: /storage/emulated/0/mydir/(input_fileName).txt Es ist wie Datei sieht erstellt wurde, aber der Fehler auftritt, von der nächsten Zeile ...
public class MainActivity extends AppCompatActivity {
TextView input_fileName, input_content, tv;
Button btnWrite;
File extDir;
File dir;
String file_name, content ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
input_fileName = (TextView) findViewById(R.id.edt_filename);
input_content = (TextView) findViewById(R.id.edt_content);
tv = (TextView) findViewById(R.id.tv);
btnWrite = (Button) findViewById(R.id.btn_writeFile);
extDir = Environment.getExternalStorageDirectory();
dir = new File(extDir, "mydir");
btnWrite.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
file_name = input_fileName.getText().toString().trim();
content = input_content.getText().toString();
if (!dir.exists())
dir.mkdirs();
file_name.replace(' ', '_');
if (!file_name.endsWith(".txt"))
file_name += ".txt";
File f = new File(dir, file_name);
try {
tv.setText(f.getCanonicalPath());
FileOutputStream fos = new FileOutputStream(f);
fos.write(content.getBytes());
fos.close();
Toast.makeText(MainActivity.this, "File Created!", Toast.LENGTH_SHORT).show();
} catch (IOException e) {
e.printStackTrace();
Toast.makeText(MainActivity.this, "exception : " + e.getMessage(), Toast.LENGTH_LONG).show();
}
}
});
}
}
Probieren Sie eine zweite '! Dir.exists()' Prüfung nach der ersten - Sind Sie sicher, dass das Verzeichnis erstellt wird? 'FileOutputStream' erstellt keine Verzeichnisse, wenn 'mkdirs()' fehlschlägt. –
Versuchen Sie auch 'f.createNewFile();', nachdem Sie 'f' deklariert haben. Wenn die Datei bereits existiert, wird nichts unternommen. –