0

glassShader.vert从以下方法调用一个文件,它给了我FileNotFoundException错误

复杂的问题是GLGridRenderer包含此方法的类位于GridLogin包内的目录中com.jasfiddle.AmazingInterface

所以要解决目录,它将是com.jasfiddle.AmazingInterface.GridLogin

但我不知道如何调用 GridLogin 中的 shader.vert

  public static String readShaderFile(String filepath) throws IOException {
    FileInputStream stream = new FileInputStream(new File(filepath));
    try{
        FileChannel fc = stream.getChannel();
        MappedByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size());
        return Charset.defaultCharset().decode(bb).toString();
    }
    finally{
        stream.close();
    }
}
4

2 回答 2

0

您要阅读的文件不应放在包中。它们应该被打包为资源或资产。例如,对于一个数据文件,将其放在res/raw文件夹中并为其指定一个合法的资源名称。然后,如果您有Context(例如您的Activity班级或View班级),则可以打开输入流。

InputStream stream = context.getResources().openRawResource(R.raw.filepath);

(如果您将文件命名为res/raw/filepath.dat。您可能想要一个更有意义的名称。如果您希望名称是一个变量,那么您可以使用以下方法获取资源 ID:

int resId = context.getResources.getIdentifier(filepath, "raw", context.getPackageName());
于 2012-06-24T06:14:23.700 回答
0

除了 raw 你还可以使用资产文件夹见链接....

try {
                // get input stream for text
                InputStream is = getAssets().open("text.txt");
                // check size
                int size = is.available();
                // create buffer for IO
                byte[] buffer = new byte[size];
                // get data to buffer
                is.read(buffer);
                // close stream
                is.close();
                            }
            catch (IOException ex) {
                return;
            }
于 2012-06-24T06:35:23.000 回答