我有一个文件dictionary.txt
,我需要从原始文件夹中获取该文件,所以我用Google搜索并找到了这个文件:
以下是一个例子:
"android.resource:///"+getPackageName()+ "/" + R.raw.dictionary;
但它不起作用,不知道吗?
编辑:
这就是我正在做的事情
for(String line: FileUtils.readLines(file))
{
if(line.toLowerCase().equals(b.toLowerCase()))
{
valid = true;
}
}
答案 0 :(得分:3)
您可以使用以下方法在原始资源上获取输入流:
getResources().openRawResource(R.raw.dictionary);
编辑:
从你的编辑开始,没有理由说明为什么你需要这个文件而不仅仅是使用openRawResource(int id)
方法提供的输入流......只需使用现有的java类{{ 3}}。
Scanner scanner = new Scanner(getResources().openRawResource(R.raw.dictionary));
while(scanner.hasNextLine()){
{
if(scanner.nextLine().toLowerCase().equals(b.toLowerCase()))
{
valid = true;
}
}
}
答案 1 :(得分:2)
很遗憾,您无法直接从File
文件夹创建raw
对象。您需要将其复制到sdcard
或应用程序缓存中。
您可以通过这种方式检索文件的InputStream
InputStream in = getResources().openRawResource(R.raw.yourfile);
try {
int count = 0;
byte[] bytes = new byte[32768];
StringBuilder builder = new StringBuilder();
while ( (count = is.read(bytes,0 32768) > 0) {
builder.append(new String(bytes, 0, count);
}
is.close();
reqEntity.addPart(new FormBodyPart("file", new StringBody(builder.toString())));
} catch (IOException e) {
e.printStackTrace();
}
编辑:
将其复制到内部存储空间:
File file = new File(this.getFilesDir() + File.separator + "fileName.ext");
try {
InputStream inputStream = resources.openRawResource(R.id._your_id);
FileOutputStream fileOutputStream = new FileOutputStream(file);
byte buf[]=new byte[1024];
int len;
while((len=inputStream.read(buf))>0) {
fileOutputStream.write(buf,0,len);
}
fileOutputStream.close();
inputStream.close();
} catch (IOException e1) {}
现在您可以在任何需要的地方访问File
。
答案 2 :(得分:1)
将文件放在assets
文件夹中,然后像这样打开
getResources().getAssets().open("dictionary.txt");