我正在尝试从Raw文件夹中读取文件dev.txt
我已放置文件:
Uri uri=Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + File.pathSeparator + File.separator + CaringApp.getAppInstance().getPackageName() + "/raw/" + "dev.txt");
PEMParser pemParser = new PEMParser(new FileReader(uri.getPath()));
我遇到了例外情况:
java.io.FileNotFoundException: /com.appname.organizer/raw/dev: open failed: ENOENT (No such file or directory)
在线:
PEMParser pemParser = new PEMParser(new FileReader(uri.getPath()));
答案 0 :(得分:0)
我正在尝试从Raw文件夹中读取文件dev.txt
这是开发计算机上的文件。它不是Android设备上的文件。 FileReader
不起作用。
相反,请在openRawResource()
对象上使用Resources
以获取InputStream
。如有必要,将其包装在InputStreamReader
中。
答案 1 :(得分:0)
在我的应用中,我已经使用了它,并且对我有用:
URL url = getClass().getResource("/assets/dev.txt");
File f = new File(url.toURI());
或者您可以使用getResourceAsStream()方法直接获取输入流:
InputStream is= getClass().getResourceAsStream("/assets/levels.txt");
isr = new InputStreamReader(is);
答案 2 :(得分:0)
尝试删除文件名的扩展名。例如。 “ dev”而不是“ dev.txt”,例如:
Uri uri=Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + File.pathSeparator + File.separator + CaringApp.getAppInstance().getPackageName() + "/raw/" + "dev");
答案 3 :(得分:0)
我正在使用此功能将二进制文件从原始文件复制到应用程序文件dir,然后从那里执行二进制文件。
File dev = new File(getApplicationContext().getFilesDir(), "dev.txt");
if (!dev.exists()) {
try {
dev.createNewFile();
} catch (IOException e) {
Log.e(TAG, "Failed to create new file!", e);
}
installBinaryFromRaw(this, R.raw.dev, dev);
将文件从原始文件复制到/ data / data // file / filename的功能
public static void installBinaryFromRaw(Context context, int resId, File file) {
final InputStream rawStream = context.getResources().openRawResource(resId);
final OutputStream binStream = getFileOutputStream(file);
if (rawStream != null && binStream != null) {
pipeStreams(rawStream, binStream);
try {
rawStream.close();
binStream.close();
} catch (IOException e) {
Log.e(TAG, "Failed to close streams!", e);
}
doChmod(file, 755);
}
}