Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何将资产文件夹中的文件路径传递到文件(字符串路径)?_Android_Xml_File Io_Assets - Fatal编程技术网

Android 如何将资产文件夹中的文件路径传递到文件(字符串路径)?

Android 如何将资产文件夹中的文件路径传递到文件(字符串路径)?,android,xml,file-io,assets,Android,Xml,File Io,Assets,可能重复: 我正在尝试传递一个文件到文件(字符串路径)类。是否有办法在assets文件夹中找到文件的绝对路径并将其传递给file()。我试过file:///android_asset/myfoldername/myfilename作为路径字符串,但不起作用。有什么想法吗?除非您将其解包,否则资产将保留在apk中。因此,没有一个路径可以输入到文件中。您在问题中给出的路径将在WebView中使用,但我认为这是WebView的一个特例 您需要解压缩该文件或直接使用它 如果有上下文,可以使用Conte

可能重复:


我正在尝试传递一个文件到文件(字符串路径)类。是否有办法在assets文件夹中找到文件的绝对路径并将其传递给file()。我试过
file:///android_asset/myfoldername/myfilename
作为路径字符串,但不起作用。有什么想法吗?

除非您将其解包,否则资产将保留在apk中。因此,没有一个路径可以输入到文件中。您在问题中给出的路径将在WebView中使用,但我认为这是WebView的一个特例

您需要解压缩该文件或直接使用它


如果有上下文,可以使用
Context.getAssets().open(“myfoldername/myfilename”)
打开文件上的InputStream。使用InputStream,您可以直接使用它,也可以将它写入某个地方(之后您可以将其与文件一起使用)。

AFAIK,您无法从资产文件创建
文件,因为这些文件存储在apk中,这意味着没有指向资产文件夹的路径

但是,您可以尝试使用缓冲区和(它提供对应用程序原始资产文件的访问)创建该
文件

试着做一些类似的事情:

AssetManager am=getAssets();
InputStream InputStream=am.open(“myfoldername/myfilename”);
File File=createFileFromInputStream(inputStream);
私有文件createFileFromInputStream(InputStream InputStream){
试一试{
文件f=新文件(我的文件名);
OutputStream OutputStream=新文件OutputStream(f);
字节缓冲区[]=新字节[1024];
整数长度=0;
而((长度=inputStream.read(缓冲区))>0){
写入(缓冲区,0,长度);
}
outputStream.close();
inputStream.close();
返回f;
}捕获(IOE异常){
//日志异常
}
返回null;
}

让我知道你的进展。

非常感谢。这有帮助。但是下面的代码使我不必在某处编写文件。@akd下面的代码是什么?你说的是yugidroid代码吗?因为代码正在创建一个新文件,不是吗?这是在2012年。我真的不记得了。但我想我说的是yugidroid代码,因为只有两个答案。我猜正如yugidroid所说的,它提供了对应用程序原始资产文件的访问,而不是创建文件。无法使用缺少的方法你的代码是一团糟的,你真的需要这样做clear@desgraci很抱歉完成了。我不知道这有多混乱。复制粘贴内容:Dthanks man,但您错过了返回:pIt可能有助于添加将文件写入的目录,例如:file f=new file(getFilesDir()+“/my_file_name.jpg”);