0

ASSETSフォルダのHTMLファイルに書き込みたいのですが。

私のHTMLは他のファイル/フォルダに関連しているため、個人用フォルダを使用できないことに注意してください。私はで書く必要があります

Assets / 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

assets フォルダーへの書き込みや、そこにあるファイルの編集はできません。読み取り専用です。

編集: コメントで提案されているように、最初に 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 に答える