アセットフォルダ内のファイルがAPKにコンパイルされているため、アセットフォルダ内のファイルには「Uri」、APK内にはそのファイルはありません。 Uriを渡す必要がある場合は、そのAssetをドキュメントやアプリケーションの別のフォルダにコピーして、Uriを取得します。
最初の読み出しストリームを取得し、ストリームを書き込み、ファイルへのあなたの資産を書くためのメソッドを作成します。
private void ReadWriteStream(Stream readStream, Stream writeStream)
{
int Length = 256;
Byte[] buffer = new Byte[Length];
int bytesRead = readStream.Read(buffer, 0, Length);
// write the required bytes
while (bytesRead > 0)
{
writeStream.Write(buffer, 0, bytesRead);
bytesRead = readStream.Read(buffer, 0, Length);
}
readStream.Close();
writeStream.Close();
}
その後の資産からの読み出しストリームを取得:
AssetFileDescriptor afd = Assets.OpenFd("filenameinAssetsfolder.ext");
var readStream = afd.CreateOutputStream();
を次に作成ファイルと書き込みストリームのパス:
// This will be your final file path
var pathToWriteFile =
Path.Combine (System.Environment.GetFolderPath
(System.Environment.SpecialFolder.Personal),
"filenametowrite.ext");
FileStream writeStream =
new FileStream(pathToWriteFile,
FileMode.OpenOrCreate,
FileAccess.Write);
最後に、コピーメソッドのcrea上記テッド:
ReadWriteStream(readStream, writeStream);
今、あなたはpathToWriteFile
にパスでファイルにアクセスすることができるはずです。
EDIT:下記のコメントに従って、AssetFileDescriptorを最初に取得する代わりに、以下を試してください。置き換え:
AssetFileDescriptor afd = Assets.OpenFd("filenameinAssetsfolder.ext");
var readStream = afd.CreateOutputStream();
で:
Stream readStream = Assets.Open("filenameinAssetsfolder.ext");
私はXamarinが何のために話すことはできませんが、普通のAndroidアプリの開発では、 'ファイル:/// android_asset'はWebView''によって使用されるものですが、少しelse。 – CommonsWare
@CommonsWare - Androidでファイルを読み込む方法のサンプルを教えてください。どこにファイルを置いても、私はファイルにアクセスできないようです。それは行く必要がある特定のディレクトリがあるようだが、私はそれを見つけることができません。 – UndefinedReference
@CommonsWare - 私は、ファイル:///mnt/sdcard/map.vtpkを参照している人々に見てきましたが、ファイルを最初に保存するアプリケーションのディレクトリをどこで見つけるかわかりません。 – UndefinedReference