如何读取音频文件

时间:2017-05-03 17:21:28

标签: java android audio inputstream outputstream

在Android项目中,我正在将音频文件读入InputStream,然后将其写入设备上的其他位置。阅读时,代码段中显示的in.read(buffer)会返回-1。运行应用程序后,我使用手机的文件管理器应用程序找到该文件。但它没有播放,因为文件是空的,即大小为0 bytes。使用InputStreamsOutputStreams

读取和写入音频文件的正确方法是什么
try {
DocumentFile newFile = pickedDir.createFile("audio/mp3", "New File");
OutputStream out = getContentResolver().openOutputStream(newFile.getUri());
InputStream in = new FileInputStream("/storage/emulated/0/beat.mp3");
// To check whether the source file exists
File testFile = File("/storage/emulated/0/beat.mp3");
Log.d("App", "exists: " + testFile.exists() + " len: " + testFile.length());//exists: true len: 0
byte[] buffer = new byte[1024];
int read;
while ((read = in.read(buffer)) != -1) {
      out.write(buffer, 0, read);
}
    in.close();
    out.flush();
    out.close();
} catch (Exception e) {
  Log.d("Exception ", e.getMessage());
}

2 个答案:

答案 0 :(得分:0)

迂腐,使用:

FileInputStream in = new FileInputStream("/storage/emulated/0/beat.mp3");

并确保路径正确且文件存在。除此之外,根据您提供的信息,我无法想到其他任何内容

答案 1 :(得分:0)

{{1}}

看来你的代码有问题,在init之前调用newFile.getUri()?