android写给sdcard

时间:2011-11-03 16:13:41

标签: java android file

我无法写入SDCARD。我无法创建目录或文件,我错过了我在清单

中有这个
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>

这在我的代码中

btnSave.setOnClickListener(new View.OnClickListener() 
        {
            public void onClick(View arg0) 
            {   
                // Create a directory; all ancestor directories must exist
                    boolean success = (new File("/sdcard/Methods/")).mkdirs();
                //create file   
                    try{
                    File myFile = new File("/sdcard/Methods/Method 1 Square.xml");
                    File file = myFile;
                        // Create file if it does not exist
                        boolean success1 = file.createNewFile();}   
                    catch (IOException e) 
                        {}
                //write to file
                    try {
                        BufferedWriter out = new BufferedWriter(new FileWriter("/sdcard/Methods/Method 1 Square.xml"));
                        out.write ("<?xml version=\"1.0\"?>");
                        out.write ("<?mso-application progid=\"Excel.Sheet\"?>");
                        out.write ("Workbook xmlns=\"urn:schemas-microsoft-com:office:spreadsheet\"");
                        out.close();
                    } // end try
                    catch (IOException e) 
                    {
                    } // end catch

            } // end public

        }); // end SAVE Button

2 个答案:

答案 0 :(得分:4)

第一件事:

只需检查'成功'变量,它是否真的返回 true

第二件事:

由于您已经对/ sdcard进行了硬编码,我建议您使用以下命令获取目录: Environment.getExternalStorageDirectory() ,因为在某些设备中,SD卡根目录为 / mnt / sdcard 所以上面的方法来获取根目录。

第三件事

您应首先检查SD卡是否已安装。

实施例

File sdCard = Environment.getExternalStorageDirectory();
File dir = new File (sdcard.getAbsolutePath() + "/dir/subdir");  // in your case, just give /Methods

dir.mkdirs();
File file = new File(dir, "filename");  // in your case, just give "Method 1 Square.xml"

FileOutputStream f = new FileOutputStream(file);

答案 1 :(得分:1)

问题可能是路径中的目录不存在。使用该FileWriter构造函数,如果该文件不存在,则会创建该文件但不包含目录。