Timothy Frisch
Timothy Frisch

Reputation: 2809

FileWriter in android gives ENOENT file not there error?

The following code is giving me an error and I'm not sure why?

I'm guessing there is a problem with my fileDir.

public void exportToCSV() throws IOException {
            new Thread() {
                public void run() {
                    if (csvThreadRunning) {
                        while (!Thread.currentThread().isInterrupted()) {
                            try {

                                File fileDir = new File(Environment
                                        .getExternalStorageDirectory()
                                        .getAbsolutePath()
                                        + File.separator + "MyDir");
                                if (!fileDir.exists()) {
                                    try {
                                        fileDir.mkdir();
                                    } catch (Exception e) {
                                        e.printStackTrace();
                                    }
                                }
                                File file = new File(Environment
                                        .getExternalStorageDirectory()
                                        .getAbsolutePath()
                                        + File.separator
                                        + "BlogData"
                                        + File.separator + "MyText.txt");
                                if (!file.exists()) {
                                    try {
                                        file.createNewFile();
                                    } catch (IOException e) {
                                        e.printStackTrace();
                                    }

                                }

                                if (file.exists()) {
                                    try {
                                        FileWriter fileWriter = new FileWriter(file);
                                        BufferedWriter bfWriter = new BufferedWriter(
                                                fileWriter);
                                        bfWriter.write(String.valueOf(globalData
                                                .getLatestGraphData1()) + "pin39");
                                        bfWriter.write(",");
                                        bfWriter.write(String.valueOf(globalData
                                                .getLatestGraphData2()) + "pin40");
                                        bfWriter.write(",");
                                        bfWriter.write(String.valueOf(globalData
                                                .getLatestGraphData3()) + "pin41");
                                        bfWriter.write(",");
                                        bfWriter.write(String.valueOf(globalData
                                                .getLatestGraphData4()) + "pin42");
                                        bfWriter.write(",");
                                        bfWriter.write(String.valueOf(globalData
                                                .getLatestGraphData5()) + "pin43");
                                        bfWriter.close();
                                    } catch (IOException e) {
                                        e.printStackTrace();
                                    }
                                }
                                Thread.sleep(1000);
                            } catch (Exception e) {

                            }
                        }
                    }
                }
            }.start();
        }

Here is the error output by logcat:

java.io.IOException: open failed: ENOENT (No such file or directory)
at java.io.File.createNewFile(Fil.java:940)
at ioio.examples.hello.MainActivity$3.run(MainActivity.java:155)
Caused by: libcore.io.ErrnoException: open fialed: ENOENT (No such file or directory)
at libcore.io.Posix.open(Native Method)
at libcore.io.BlockGuardOs.open(BlockGuardOs.java:110)
at java.io.File.createNewFile(File.java:933)

line 155 refers to this code:

    file.createNewFile();

Upvotes: 0

Views: 1069

Answers (1)

Gabe Sechan
Gabe Sechan

Reputation: 93559

The directory you're writing to doesn't exist, because the folder BlogData doesn't exist. Create that first.

new File(Environment.getExternalStorageDirectory().getAbsolutePath()
                                        + File.separator + "BlogData").mkdirs();

Upvotes: 2

Related Questions