Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.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
Java 合并mp3文件FileNotFoundException_Java_Android - Fatal编程技术网

Java 合并mp3文件FileNotFoundException

Java 合并mp3文件FileNotFoundException,java,android,Java,Android,我需要合并2个mp3文件(端到端,而不是混合在一起)。这些文件位于我的res/raw文件夹中。当我使用Media Player播放它们时,它们会工作,但当我尝试合并它们时,会出现以下错误: java.io.FileNotFoundException: /android.content.res.AssetManager$AssetInputStream@65561058: open failed: ENOENT (No such file or directory) 我已经试了几个小时了。我想我

我需要合并2个mp3文件(端到端,而不是混合在一起)。这些文件位于我的res/raw文件夹中。当我使用Media Player播放它们时,它们会工作,但当我尝试合并它们时,会出现以下错误:

java.io.FileNotFoundException: /android.content.res.AssetManager$AssetInputStream@65561058: open failed: ENOENT (No such file or directory)
我已经试了几个小时了。我想我一定是提供了格式错误的FileInputStream之类的,但问题似乎出在其他地方,包括找不到文件或不允许访问目录之类的。我知道在这个网站上有很多类似的问题,但是我看了无数的问题,仍然没有找到解决办法

代码如下:

    Handler handler=new Handler();
    handler.postDelayed(new Runnable() {

      @Override
      public void run() {

          File first =  new File(getResources().openRawResource(R.raw.file101).toString());
          File second = new File(getResources().openRawResource(R.raw.file103).toString());

          String filepath = Environment.getExternalStorageDirectory().getPath();
          File file = new File(filepath, "myapp");
          mergeSongs(new File(file.getAbsoluteFile()+"/mergedFile.mp3"), new File[] {first, second});

      }
  },2000);


private void mergeSongs(File mergedFile,File...mp3Files){

    try {
        FileInputStream fis1 = new FileInputStream(mp3Files[0]); //Error is at this line
        FileInputStream fis2 = new FileInputStream(mp3Files[1]);
        Toast.makeText(MainActivity.this, mp3Files[0].toString()+mp3Files[1].toString(), Toast.LENGTH_LONG).show();
        SequenceInputStream sis = new SequenceInputStream(fis1,fis2);

        if(!mergedFile.exists()){
            mergedFile.createNewFile();}

        FileOutputStream fos = new FileOutputStream(mergedFile);

        int temp;

         while ((temp = sis.read())!= -1){

                fos.write((byte)temp);

            }

         fis1.close();
         fis2.close();
         sis.close();
         fos.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

}
新错误:

11-11 11:46:14.180: W/System.err(23975): java.io.IOException: open failed: ENOENT (No such file or directory)
11-11 11:46:14.180: W/System.err(23975):    at java.io.File.createNewFile(File.java:946)
11-11 11:46:14.180: W/System.err(23975):    at com.myapp.MainActivity.mergeSongs(MainActivity.java:311)
11-11 11:46:14.180: W/System.err(23975):    at com.myapp.MainActivity.access$7(MainActivity.java:300)
11-11 11:46:14.180: W/System.err(23975):    at com.myapp.MainActivity$8.run(MainActivity.java:290)
11-11 11:46:14.180: W/System.err(23975): java.io.IOException: open failed: ENOENT (No such file or directory)
11-11 11:46:14.180: W/System.err(23975):    at java.io.File.createNewFile(File.java:946)
11-11 11:46:14.180: W/System.err(23975):    at com.myapp.MainActivity.mergeSongs(MainActivity.java:311)
11-11 11:46:14.180: W/System.err(23975):    at com.myapp.MainActivity.access$7(MainActivity.java:300)
11-11 11:46:14.180: W/System.err(23975):    at com.myapp.MainActivity$8.run(MainActivity.java:290)

将文件InputStreams更改为InputStreams,并按如下方式获取它们:

InputStream=getResources().openRawResource(R.raw.file101)

新错误:

11-11 11:46:14.180: W/System.err(23975): java.io.IOException: open failed: ENOENT (No such file or directory)
11-11 11:46:14.180: W/System.err(23975):    at java.io.File.createNewFile(File.java:946)
11-11 11:46:14.180: W/System.err(23975):    at com.myapp.MainActivity.mergeSongs(MainActivity.java:311)
11-11 11:46:14.180: W/System.err(23975):    at com.myapp.MainActivity.access$7(MainActivity.java:300)
11-11 11:46:14.180: W/System.err(23975):    at com.myapp.MainActivity$8.run(MainActivity.java:290)
11-11 11:46:14.180: W/System.err(23975): java.io.IOException: open failed: ENOENT (No such file or directory)
11-11 11:46:14.180: W/System.err(23975):    at java.io.File.createNewFile(File.java:946)
11-11 11:46:14.180: W/System.err(23975):    at com.myapp.MainActivity.mergeSongs(MainActivity.java:311)
11-11 11:46:14.180: W/System.err(23975):    at com.myapp.MainActivity.access$7(MainActivity.java:300)
11-11 11:46:14.180: W/System.err(23975):    at com.myapp.MainActivity$8.run(MainActivity.java:290)

谢谢你的回复!有了这个新代码,我得到了相同的错误,但在不同的地方。现在我在mergedFile.createNewFile()行中得到了错误。有什么想法吗?请发布异常。实际上,我尝试了-Log.d(“mergedFile”,mergedFile.toString());它显示/storage/emulated/0/myapp/mergedFile.mp3使用以下命令:创建文件