在Android中创建文件时获取IO异常?

时间:2013-06-29 09:45:35

标签: android ioexception

我在一个应用程序中工作,在我的SDCARD中创建文件夹后创建文件时遇到非常愚蠢的异常。我正在使用以下代码:

private void downloadFileFromURL(String filePath){
        String extStorageDirectory = Environment.getExternalStorageDirectory() .toString();
        File folder = new File(extStorageDirectory, "PS/BC_REPO");
        folder.mkdir();
        File file=new File(folder, "My_QR_Image.jpg");
        try {
            file.createNewFile();
        } catch (IOException e1) {
            e1.printStackTrace();

        }
        boolean pdfSize=Downloader.downloadFile(QRCodeImageURL1, file, GetAllDataFromServerActivity.this);

        if(pdfSize){
            System.out.println("downloaded");
        }
    }



java.io.IOException: Not a directory
at java.io.File.createNewFileImpl(Native Method)
at java.io.File.createNewFile(File.java:1160)
t com.tech.persociety.GetAllDataFromServerActivity.downloadFileFromURL(GetAllDataFromServerActivity.java:614)
at com.tech.persociety.GetAllDataFromServerActivity.getJsonResponse(GetAllDataFromServerActivity.java:169)
at com.tech.persociety.GetAllDataFromServerActivity.access$0(GetAllDataFromServerActivity.java:124)
at com.tech.persociety.GetAllDataFromServerActivity$1.dispatchMessage(GetAllDataFromServerActivity.java:108)
at com.tech.persociety.GetAllDataFromServerActivity.serverResponse(GetAllDataFromServerActivity.java:103)
at com.tech.servercommunication.WebServiceCommunicator.notifyRegisteredUser(WebServiceCommunicator.java:225)
at com.tech.servercommunication.WebServiceCommunicator.handleResponse(WebServiceCommunicator.java:211)
at com.tech.servercommunication.WebServiceCommunicator$2.run(WebServiceCommunicator.java:99)
at java.lang.Thread.run(Thread.java:1096)
: W/System.err(6175): java.io.IOException: Not a directory
at java.io.File.createNewFileImpl(Native Method)
at java.io.File.createNewFile(File.java:1160)
at com.tech.persociety.Downloader.downloadFile(Downloader.java:32)
at com.tech.persociety.GetAllDataFromServerActivity.downloadFileFromURL(GetAllDataFromServerActivity.java:623)
at com.tech.persociety.GetAllDataFromServerActivity.getJsonResponse(GetAllDataFromServerActivity.java:169)
at com.tech.persociety.GetAllDataFromServerActivity.access$0(GetAllDataFromServerActivity.java:124)
at com.tech.persociety.GetAllDataFromServerActivity$1.dispatchMessage(GetAllDataFromServerActivity.java:108)
at com.tech.persociety.GetAllDataFromServerActivity.serverResponse(GetAllDataFromServerActivity.java:103)
at com.tech.servercommunication.WebServiceCommunicator.notifyRegisteredUser(WebServiceCommunicator.java:225)
at com.tech.servercommunication.WebServiceCommunicator.handleResponse(WebServiceCommunicator.java:211)
at com.tech.servercommunication.WebServiceCommunicator$2.run(WebServiceCommunicator.java:99)
at java.lang.Thread.run(Thread.java:1096)

我必须创建一个FOLDER PS,我必须在其中创建另一个文件夹BCREPO,我必须在其中创建一个JPG文件。但是在这方面失败了。

4 个答案:

答案 0 :(得分:1)

您似乎正在尝试创建两个文件夹“PS / BC_REPO”。尝试使用mkdirs()代替mkdir()并检查返回值。 stacktrace表示创建文件夹不起作用。

答案 1 :(得分:0)

你的目录问题
“PS / BC_REPO”更改为“/ PS / BC_REPO”
My_QR_Image.jpg 更改为 /My_QR_Image.jpg
或者您也可以使用文件夹名称

之后的 /

再次检查。

Environment.getExternalStorageDirectory()的toString()
返回 / mnt / sdcard ,因此您必须包含 / ...

答案 2 :(得分:0)

试试这个

File mSampleFile = null;
  if (mSampleFile == null) {

   String newFolder = "/PS/BC_REPO";

        String extStorageDirectory = Environment
                .getExternalStorageDirectory().toString();

    File myNewFolder = new File(extStorageDirectory + newFolder);

    if (!myNewFolder.exists()) {

    myNewFolder.mkdir();

    }

答案 3 :(得分:0)

这是一个答案.....现在我们有文件夹PS,其中我们有一个JPG文件。但我想在PS中创建另一个文件夹,我必须在其中存储文件。

private void downloadFileFromURL(String filePath){
        String QRCodeImageURL = this.getIntent().getStringExtra("QR_CODE"); 
        String extStorageDirectory = Environment.getExternalStorageDirectory() .toString();
        File folder = new File(extStorageDirectory, "BCRepo");
        folder.mkdir();
        File file=new File(folder, "My_QR_Image.jpg");
        try {
            file.createNewFile();
        } catch (IOException e1) {
            e1.printStackTrace();
            runOnUiThread(new Runnable() {
                public void run() {
                    Constant.showAlertDialog(Constant.DIALOG_TITLE_ERROR,"Error", GetAllDataFromServerActivity.this,false);
                }
            });
        }
        boolean pdfSize=Downloader.downloadFile(QRCodeImageURL, file, GetAllDataFromServerActivity.this);
        if(pdfSize){
            System.out.println("downloaded");
        }
    }