0

So I followed some of the advices for this exception online, including:

  • Not to create files directly under the root directory of external storage;
  • Add write and read permissions to the manifest;
  • Change my numeric file names to non-numeric.
  • User FileInputStream when reading.

However I still see this exception being thrown:

java.io.FileNotFoundException, open failed: ENOENT

Here is my class:

public class SaveReminderToFile {
    private String fileName;
    private File gFile;

    public SaveReminderToFile(String fileName) throws FileNotFoundException, UnsupportedEncodingException {
        this.fileName = "reminder"+fileName+".txt";
        File root = android.os.Environment.getExternalStorageDirectory();

        File dir = new File(root.getAbsolutePath()+"/ReminderApp2");
        if (!dir.exists()){
            dir.mkdirs();//create folders where write files
        }
         gFile = new File(dir,this.fileName);
    }

    public void writeToFile(String[] data, Context context){
        try{

            BufferedWriter oFile = new BufferedWriter(new OutputStreamWriter(
                    new FileOutputStream(gFile.getAbsoluteFile()), "UTF-8"));
            for(String word :data) {
                oFile.write(word);
                oFile.newLine();
            }
            oFile.close();
        }catch(IOException e){
            Log.e("Exception",e.getMessage());
        }
    }

  public String readFromFile(){
        String ret="";
        try{
            FileInputStream inputStream =new FileInputStream(gFile.getAbsolutePath()); 
            if ( inputStream != null ) {
                InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
                BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
                String receiveString = "";
                StringBuilder stringBuilder = new StringBuilder();

                while ( (receiveString = bufferedReader.readLine()) != null ) {
                    stringBuilder.append(receiveString);
                }

                inputStream.close();
                ret = stringBuilder.toString();
            }
        } catch (FileNotFoundException e) {

            Log.e("login activity", "File not found: " + e.toString());
            ret=e.toString();
        } catch (IOException e) {
            Log.e("login activity", "Can not read file: " + e.toString());
            ret=e.toString();
        }
        return ret;
    }
    }
Dylan Czenski
  • 1,305
  • 4
  • 29
  • 49

0 Answers0