Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在android中,当我将一个文件从原始文件夹移动到SD卡时,该文件赢了';别动_Android - Fatal编程技术网

在android中,当我将一个文件从原始文件夹移动到SD卡时,该文件赢了';别动

在android中,当我将一个文件从原始文件夹移动到SD卡时,该文件赢了';别动,android,Android,我使用以下代码将音频文件表单res/raw文件夹移动到SD卡,当我执行此代码时,文件不会移动。为什么会发生,在这一行我犯了错误 MoveAudio.java public class MoveAudioextends Activity { /** Called when the activity is first created. */ public void onCreate(Bundle savedInstanceState) { super.onCrea

我使用以下代码将音频文件表单
res/raw
文件夹移动到SD卡,当我执行此代码时,文件不会移动。为什么会发生,在这一行我犯了错误

MoveAudio.java

public class MoveAudioextends Activity {

    /** Called when the activity is first created. */

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button a = (Button) findViewById(R.id.Button01);

        a.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                byte[] buffer = null;
                InputStream fIn = getBaseContext().getResources()
                        .openRawResource(R.raw.song);
                int size = 0;
                System.out.println("<<<<<<<SIZE>>>>>>>>>>>>>>>>>>>>" + fIn);
                try {
                    size = fIn.available();
                    System.out
                            .println("<<<<<<<SIZE>>>>>>>>>>>>>>>>>>>>" + size);
                    buffer = new byte[size];
                    fIn.read(buffer);
                    fIn.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block

                }
                String path = "/sdcard/media/audio/ringtones/";
                String filename = "examplefile" + ".ogg";

                boolean exists = (new File(path)).exists();
                if (!exists) {
                    System.out
                            .println("<<<<<<<FALSE SO INSIDE THE CONDITION>>>>>>>>>>>>>>>>>>>>");
                    new File(path).mkdirs();
                }

                FileOutputStream save;
                try {
                    save = new FileOutputStream(path + filename);
                    System.out
                            .println("<<<<<<<SAVE>>>>>>>>>>>>>>>>>>>>" + save);
                    save.write(buffer);
                    save.flush();
                    save.close();
                } catch (FileNotFoundException e) {
                    // TODO Auto-generated catch block

                } catch (IOException e) {
                    // TODO Auto-generated catch block

                }
                sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,
                        Uri.parse("file://" + path + filename)));

                File k = new File(path, filename);
                System.out.println("<<<<<<<SAVE>>>>>>>>>>>>>>>>>>>>" + k);
            }
        });

    }

}
公共类活动{
/**在首次创建活动时调用*/
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
按钮a=(按钮)findViewById(R.id.Button01);
a、 setOnClickListener(新的OnClickListener(){
公共void onClick(视图v){
字节[]缓冲区=空;
InputStream fIn=getBaseContext().getResources()
.openrawsource(R.raw.song);
int size=0;
系统输出打印项次(“>>>>>>>>>>”+fIn);
试一试{
尺寸=鳍。可用();
系统输出
.println(“>>>>>>>>”+尺寸);
缓冲区=新字节[大小];
fIn.read(缓冲区);
fIn.close();
}捕获(IOE异常){
//TODO自动生成的捕捉块
}
String path=“/sdcard/media/audio/ringtones/”;
String filename=“examplefile”+”.ogg”;
布尔存在=(新文件(路径)).exists();
如果(!存在){
系统输出
.println(“>>>>>>>>”);
新文件(路径).mkdirs();
}
FileOutputStream保存;
试一试{
保存=新文件输出流(路径+文件名);
系统输出
.println(“>>>>>>>>>”+保存);
保存、写入(缓冲区);
save.flush();
save.close();
}catch(filenotfounde异常){
//TODO自动生成的捕捉块
}捕获(IOE异常){
//TODO自动生成的捕捉块
}
sendBroadcast(新意图)(Intent.ACTION\u MEDIA\u SCANNER\u SCAN\u文件,
parse(“文件:/”+路径+文件名));
文件k=新文件(路径、文件名);
系统输出打印项次(“>>>>>>>>”+k);
}
});
}
}

在xml文件中,我有一个sing按钮,当我单击该按钮时,文件将移动。此代码执行时不会出错,但文件不会移动。

请尝试将这些内容写出,而不要使用空的catch块

e.printStackTrace();
// I believe it is.
此外,您是否具有写入SD卡的权限

permission.WRITE_EXTERNAL_STORAGE

不要有空的catch块,试着把它们写出来

e.printStackTrace();
// I believe it is.
此外,您是否具有写入SD卡的权限

permission.WRITE_EXTERNAL_STORAGE

资源文件夹中歌曲的文件名是什么?我询问的原因是,对于压缩的文件,有一个可以读回的最大文件大小。如果您的文件以.ogg扩展名命名,则不应压缩,因此不受此限制。但是,如果您将其命名为其他被压缩的名称,则可能存在此问题

记录错误的一个好方法是使用androids日志方法。这样做:

  catch (FileNotFoundException e) {
      // TODO Auto-generated catch block
     Log.e(TAG, "FileNotFoundException", e);
  } catch (IOException e) {
      // TODO Auto-generated catch block
     Log.e(TAG, "IOException", e);

  }
您可能会收到“数据超过解压数据最大值(1290892 vs 1048576)”消息


但唯一确定的方法是记录错误。也可能SD卡空间不足或您没有写入权限。

资源文件夹中歌曲的文件名是什么?我询问的原因是,对于压缩的文件,有一个可以读回的最大文件大小。如果您的文件以.ogg扩展名命名,则不应压缩,因此不受此限制。但是,如果您将其命名为其他被压缩的名称,则可能存在此问题

记录错误的一个好方法是使用androids日志方法。这样做:

  catch (FileNotFoundException e) {
      // TODO Auto-generated catch block
     Log.e(TAG, "FileNotFoundException", e);
  } catch (IOException e) {
      // TODO Auto-generated catch block
     Log.e(TAG, "IOException", e);

  }
您可能会收到“数据超过解压数据最大值(1290892 vs 1048576)”消息


但唯一确定的方法是记录错误。也可能SD卡空间不足或您没有写入权限。

在本例中,我的原始文件是“test.pdf” 我们将使用手机中的“下载”文件夹。 原始文件夹中的“test.pdf”将作为“example.pdf”移动到“Download/test_filemove”文件夹 在“res”文件夹中创建新的“raw”文件夹。 将“test.pdf”复制到“raw”文件夹

当然,你应该在布局中使用按钮01

不要忘记在清单文件中授予权限,如下所示


我只是稍微修改一下你的例子

公共类MainActivity扩展了活动{

@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
按钮a=(按钮)findViewById(R.id.Button01);
a、 setOnClickListener(新视图。OnClickListener(){
公共void onClick(视图v){
字节[]缓冲区=空;
InputStream fIn=getBaseContext().getResources()
.openRawResource(R.raw.test);
int size=0;
系统输出打印项次(“>>>>>>>>>>”+fIn);
试一试{
尺寸=鳍。可用();
系统输出
.println(“>>>>>>>>”+尺寸);
缓冲区=新字节[大小];
fIn.read(缓冲区);
fIn.close();
}捕获(IOE异常){
//TODO自动生成的捕捉块
}
字符串路径=Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_下载)+“/test_filemove/”;
String filename=“示例”+“.pdf”;
布尔存在=(新文件(路径)).exists();