Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android open failed: ENOTDIR (Not a directory)

Tags:

java

android

I am getting this error when trying to generate some files onto the internal drive. The following is the printstack

03-27 01:36:16.111: W/System.err(1445): java.io.FileNotFoundException: /data/data/dev.shaw.MyShoppingPlanner/files/Stores/Giant_314_Horsham_Rd.txt: open failed: ENOTDIR (Not a directory)

the code for this

private void generateFiles() throws IOException {

    File storelist = new File(this.getFilesDir()  + File.separator +"Stores");
    File listnames = new File(this.getFilesDir() + File.separator + "Lists");
    listnames.mkdirs();
    storelist.mkdirs();
    //generate the store list, (Store Name) (street# Street la./rd./ave./etc.) (City/Town State ZipCode)
    String stores[] ={"Giant Foodstore 314 Horsham Rd. Horsham Pa. 19044", "Acme Food 200 Blair Mill Rd. Horsham Pa. 19044"};
    String lnames[] = {"Default List"};
    String Dstorepath = storelist+File.separator + "Giant_314_Horsham_Rd.txt";
    String Dlistpath = listnames + File.separator + "Default_List.txt";
    File sample_store = new File(Dstorepath);
    File sample_list = new File(Dlistpath);
    FileOutputStream fos = new FileOutputStream(sample_store);
    fos.write(stores[0].getBytes());
    Toast.makeText(this,"Store File Generated" , Toast.LENGTH_SHORT).show(); 
    fos = new FileOutputStream(sample_list);
    fos.write(lnames[0].getBytes()); 
    Toast.makeText(this,"List File Generated" , Toast.LENGTH_SHORT).show();
    Intent intent = new Intent(this, MainActivity.class);
    startActivity(intent);
}
like image 849
Ctshaw Avatar asked Mar 27 '14 01:03

Ctshaw


1 Answers

Try check folder is exists.
ex)

File listnames = new File(this.getFilesDir() + File.separator + "Lists");
if( !listnames.exists() )
    listnames.mkdirs();
else if( !listnames.isDirectory() && listnames.canWrite() ){
    listnames.delete();
    listnames.mkdirs();
}
else{
    //you can't access there with write permission.
    //Try other way.
}
like image 156
Amadas Avatar answered Oct 16 '22 19:10

Amadas