在Android中访问Raw文件夹中的文件

时间:2016-01-16 04:48:20

标签: android audio export wav

我正在开发Android应用程序中的导出功能。这些文件是wav文件,存储在res / raw文件夹中。我该如何访问这些文件?

View v = inflater.inflate(R.layout.activity_dialog, container, false);
        ImageButton mImageButton = (ImageButton) v.findViewById(R.id.image_button);

selection [i]是res / raw文件夹中我需要的文件的文件名。代码总是返回“NOT”,这意味着它没有从res / raw文件夹中找到我想要的文件。有人可以帮我吗?感谢。

2 个答案:

答案 0 :(得分:0)

我不确定您是否可以通过类似File来访问资源。这是我在原始文件夹中读取HTML文件的方式:

public static String getStringFromResource(Context context, @RawRes int id) {
    BufferedReader reader = null;

    try {
        StringBuilder stringBuilder = new StringBuilder();
        InputStream inputStream = context.getResources().openRawResource(id);
        reader = new BufferedReader(new InputStreamReader(inputStream));

        String currentLine;
        while ((currentLine = reader.readLine()) != null ) {
            stringBuilder.append(currentLine);
        }
        return stringBuilder.toString();
    } catch (IOException e) {
        Log.e(TAG, "Error opening raw resource: " + id);
    } finally {
        if (reader != null) {
            try {
                reader.close();
            } catch (IOException e) {
                Log.e(TAG, "Error closing raw resource: " + id, e);
            }
        }
    }

    return null;
}

您的关键部分是InputStream inputStream = context.getResources().openRawResource(id);调用,它会为您提供文件流。使用该流写入要导出的输出文件。

答案 1 :(得分:0)

这将返回原始文件的字节数组:

 Resources res = context.getResources();
    InputStream inputStream = res.openRawResource(rawResource);
    try {
        byte[] b = new byte[inputStream.available()];
        inputStream.read(b);
    } catch (Exception e) {
        // exception thrown
    }