在Android项目中,我正在将音频文件读入InputStream
,然后将其写入设备上的其他位置。阅读时,代码段中显示的in.read(buffer)
会返回-1
。运行应用程序后,我使用手机的文件管理器应用程序找到该文件。但它没有播放,因为文件是空的,即大小为0 bytes
。使用InputStreams
和OutputStreams
?
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());
}
答案 0 :(得分:0)
迂腐,使用:
FileInputStream in = new FileInputStream("/storage/emulated/0/beat.mp3");
并确保路径正确且文件存在。除此之外,根据您提供的信息,我无法想到其他任何内容
答案 1 :(得分:0)
{{1}}
看来你的代码有问题,在init之前调用newFile.getUri()?