1

我正在使用 android 应用程序动态生成 midi 文件(在缓存目录中)。

生成后,我在同一个应用程序中使用 MediaPlayer 播放文件。

第一次运行应用程序时,它已经需要文件在缓存目录中(应用程序崩溃)。如果我先使用文件管理器将虚拟文件放在那里,它可以在模拟器上运行。我该如何规避这个?

我需要该应用程序首次在平板电脑上运行,而不需要文件。

我现在正在使用这些命令:

try {

            filePath = getCacheDir() + "/optimuse" + song + ".mid";
            file = new File(filePath);

            inputStream = new FileInputStream(file);
            if (inputStream.getFD().valid()) {
                System.out.println("Valid!");
            }
        } catch (Exception e1) {
            e1.printStackTrace();
            System.exit(-1);
        }

        try {
            mediaPlayer = new MediaPlayer();
            mediaPlayer.setDataSource(inputStream.getFD());
            inputStream.close();
        } catch (Exception e1) {
            e1.printStackTrace();
            System.exit(-1);
        }

        try {
            mediaPlayer.prepare();
        } catch (IllegalStateException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

有没有办法解决?

谢谢!

4

1 回答 1

1

也许在使用之前检查文件是否存在?您可以使用该方法实现此目的File#exists()

首先,您使用该Context#getFileStreamPath(String)方法 - 其中 String 是您尝试访问的文件的文件名。然后你可以调用File#exists()返回的对象。

于 2012-08-02T12:13:17.433 回答