将文件保存到SD卡

时间:2012-06-29 07:05:56

标签: java android

.txt文件需要保存在SD卡中。

Save("n" + String.valueOf(key) + ".txt");

 private void Save(String FileName){
         File fileName = null;
         String sdState = android.os.Environment.getExternalStorageState();

         if (sdState.equals(android.os.Environment.MEDIA_MOUNTED)) {
             File sdDir = android.os.Environment.getExternalStorageDirectory();
             fileName = new File(sdDir, "FlyNote/"+FileName);
             } else {
                 fileName = context.getCacheDir();
             }
         if (!fileName.exists())
             fileName.mkdirs();
         try {
             FileWriter f = new FileWriter(fileName);
             f.write(editText2.getText().toString());
             f.flush();
             f.close();
         } catch (Exception e) {

         }
     }

但是在SD卡文件中保存为文件夹。 文件夹“n5.txt”和其他......

4 个答案:

答案 0 :(得分:2)

使用

File  dir= new File(sdDir.getAbsolutePath(), "FlyNote");
dir.mkdirs(); //CREATE DIR HERE
File  file = new File(dir, FileName);//CREATE FILE HERE

而不是

fileName = new File(sdDir, "FlyNote/"+FileName);

答案 1 :(得分:0)

当您测试是否存在时,您正在搜索Flynote/Filename是否存在,如果它不存在,则使用mkdirs创建一个。{/ p>

fileName.mkdirs()创建一个包含该文件名称的目录。因此,您会发现错误。您的mkdirs应仅适用于Flynote而非Flynote/+FileName

答案 2 :(得分:0)

试试这个,

如果您的目标是文件,为什么使用“mkdir”使目录不是文件。

此代码用于创建文件:

File f = new File("/sdcard/n5.txt");
FileWriter fw = new FileWriter(f);
BufferedWriter bw = new BufferdWriter(fw);
bw.write("Hello");

检查文件夹是否存在......

File f = new File("/sdcard/myfolder");
if (f.exists()){

   // do what u want

   }
else{
       // doesnt exists
      }

答案 3 :(得分:0)

这里给出的大部分方法都很好......您也可以使用以下代码:

    public static void addToFile(String file,String message){

    try {
        FileOutputStream fos = new FileOutputStream(file,true);
        fos.write(("\n"+message).getBytes());
        fos.close();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

此处“文件”是一个字符串,其中包含文件的路径,例如:File =“/ sdcard / parentPath / FileName.txt”和“message”显示您想要输入文件的消息。 (考虑到文件包含txt内容)