Search code examples
androidsd-cardfilenotfoundexception

getting filenotfound exception android writing to sd card


I want to create a file in sd card and put my image from resouces into it.But the problem is I get a exception in this line:

    OutputStream out = new FileOutputStream(newFile);

here is my method am calling on button click and the log cat

    private void openSaveDialog(){try {
             String dirName = "/sdcard/ABCD"; 

            File newFile = new File(dirName); 
            newFile.mkdir(); 
            String str ="android.resource://com.sample.projectnew/"+ID ;

            // convert String into InputStream
            InputStream in = new ByteArrayInputStream(str.getBytes());

            OutputStream out = new FileOutputStream(newFile);


                    copyFile(in, out);
                    in.close();
                    in = null;
                    out.flush();
                    out.close();
                    out = null;
                    Toast.makeText(GActivity.this,"Your image is saved to this folder",Toast.LENGTH_LONG)
                            .show();
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            Toast.makeText(GActivity.this,
                    "Your got exception", Toast.LENGTH_LONG)
                    .show();
            e.printStackTrace();
        } }

    private void copyFile(InputStream in, OutputStream out) throws IOException {
    byte[] buffer = new byte[1024];
    int read;
    while((read = in.read(buffer)) != -1){
        out.write(buffer, 0, read);
    }
}

the log cat is here:

     08-25 23:00:57.949: W/System.err(9190): **java.io.FileNotFoundException: /sdcard/ABCD (Is a directory)**
08-25 23:00:57.949: W/System.err(9190):     at org.apache.harmony.luni.platform.OSFileSystem.open(Native Method)
08-25 23:00:57.949: W/System.err(9190):     at dalvik.system.BlockGuard$WrappedFileSystem.open(BlockGuard.java:232)
08-25 23:00:57.949: W/System.err(9190):     at java.io.FileOutputStream.<init>(FileOutputStream.java:94)
08-25 23:00:57.949: W/System.err(9190):     at java.io.FileOutputStream.<init>(FileOutputStream.java:66)

Please advice me where I am wrong??? and give me the solution


Solution

  • You are trying to write to a directory. Try something like so:

    OutputStream out = new FileOutputStream(new File(newFile, "filename"));