0

我想在资产文件夹中写入我的 HTML 文件。

请注意,因为我的 HTML 与其他文件/文件夹相关,所以我不能使用个人文件夹。我必须写在

资产/HTML/mycharts.html

[MY WRITING code below return these errors

System.IO.File.WriteAllText("file:///android_asset/myGraphs/BarGraph.html", s);

]

错误

UNHANDLED EXCEPTION: System.IO.DirectoryNotFoundException: Could not find a part of the path "//file:///android_asset/myGraphs/BarGraph.html".
at System.IO.FileStream..ctor (string,System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare,int,bool,System.IO.FileOptions) <0x00208>
at System.IO.FileStream..ctor (string,System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare) <0x00057>
at System.IO.StreamWriter..ctor (string,bool,System.Text.Encoding,int) <0x00087>
at System.IO.StreamWriter..ctor (string,bool,System.Text.Encoding) <0x00037>
at


]
4

2 回答 2

0

我使用以下代码根据上述解决方案实现了这一点:

               using (StreamReader sr = new StreamReader( this.contextCalledFrom.Assets.Open("pdfreport.html")))
           html = sr.ReadToEnd();

            MemoryStream memoryStream = new MemoryStream();
            client.convertHtml(html, memoryStream);

            var folder = Android.OS.Environment.ExternalStorageDirectory + Java.IO.File.Separator + "wpfolder";

            if (!Directory.Exists(folder))
                Directory.CreateDirectory(folder);

            var extFileName = folder + Java.IO.File.Separator + "report.pdf";

            using (FileStream file = new FileStream(extFileName, FileMode.Create, FileAccess.Write))
           {
               memoryStream.WriteTo(file);
           }
于 2013-04-02T07:12:20.810 回答
0

无法写入资产文件夹或编辑其中的任何文件。它是只读的。

编辑: 正如评论中所建议的,最初将您的 HTML 放在您的资产中,并在需要时将它们保存在 SD 卡或私人存储中。

要将文件存储在 SD 卡上,您可以像这样获取 SD 卡的路径:

var folder = Android.OS.Environment.ExternalStorageDirectory + Java.IO.File.Separator + "MyAppFolder";

"MyAppFolder"可以是您想要的任何名称,只要它不与 SD 卡上的某些其他文件夹名称冲突,因此请确保检查它是否已经存在。将其与文件名结合起来,如下所示:

var extFileName = folder + Java.IO.File.Separator + "MyFile.txt";

现在向文件中写入一些内容:

if (!Directory.Exists(folder))
    Directory.CreateDirectory(folder);
using (var fs = new FileStream(extFileName, FileMode.OpenOrCreate))
{
    var buf = Encoding.ASCII.GetBytes("Hello, world!");
    fs.Write(buf, 0, buf.Length);
} 

如果要将数据存储在内部存储中,可以通过以下方式获取私有存储的路径:

var folder = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
于 2012-11-03T21:57:59.470 回答