我从以下方法调用文件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();
}
}
答案 0 :(得分: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());
答案 1 :(得分:0)
除了raw之外,您还可以使用资产文件夹,请参阅link ....
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;
}