从sdacard将音乐文件保存到内部存储

时间:2014-04-29 16:49:09

标签: android file file-io bitmap

我一直在尝试将文件(音轨)从SD卡保存到内部存储器。 我已经使用此代码

的图像完成了这项工作
ContextWrapper cw = new ContextWrapper(getApplicationContext());
     // path to /data/data/fairyTale/app_data/ImgMsc
    File directory = cw.getDir("ImgMsc", Context.MODE_PRIVATE);
    // Create imageDir
    File mypath=new File(directory,Name+".png");

    FileOutputStream fos = null;
    try {           

        fos = new FileOutputStream(mypath);

   // Use the compress method on the BitMap object to write image to the OutputStream
        bitmapImage.compress(Bitmap.CompressFormat.PNG, 100, fos);
        fos.close();
    } catch (Exception e) {
        e.printStackTrace();
    }

现在这很好用,创建一个目录并保存我的位图,但我想为音乐文件做同样的事情。
此外,我想知道如何阅读该文件(在应用程序中使用它) 我用这段代码来读取位图

File f=new File(path,name+".png");
        Bitmap b = BitmapFactory.decodeStream(new FileInputStream(f));
        return b;

P.S。我试过的代码,但似乎没有产生正确的副本:

String filePath=Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)+"/"+name;
    File music = new File(filePath);
    ContextWrapper cw = new ContextWrapper(getApplicationContext());
    // path to /data/data/fairyTale/app_data/ImgMsc
    File directory = cw.getDir("ImgMsc", Context.MODE_PRIVATE);
    File mypath=new File(directory,name+".mp3");
    try {
    InputStream is=new FileInputStream(music);
    OutputStream os;
    os = new FileOutputStream(mypath);
    byte[] buff=new byte[1024];
        int len;
        while((len=is.read(buff))>0){
            os.write(buff,0,len);
        }
        is.close();
        os.close();
    }

1 个答案:

答案 0 :(得分:1)

以下代码对我有用:

private void saveToInternalStorage(String name){
    String filePath=Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)+"/"+name;
    File music = new File(filePath);
    ContextWrapper cw = new ContextWrapper(getApplicationContext());
    // path to your data
    File directory = cw.getDir("ImgMsc", Context.MODE_PRIVATE);
    File mypath=new File(directory,name+".mp3");
    // Create imageDir
    try {
    InputStream is=new FileInputStream(music);
    OutputStream os;
    os = new FileOutputStream(mypath);
    byte[] buff=new byte[1024];
        int len;
        while((len=is.read(buff))>0){
            os.write(buff,0,len);
        }
        is.close();
        os.close();
    DeleteFile(filePath);
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

希望它有所帮助!