文件未正确下载

时间:2014-08-05 14:55:33

标签: iphone xamarin webclient

我正在从网址下载文件并将其保存到手机上的目录中。

路径为:/private/var/mobile/Applications/17E4F0B0-0781-4259-B39D-37057D44B778/Documents/samplefile.txt

然而,当我调试文件时,创建并下载。但是,当我临时并运行该文件时。 samplefile.txt已创建,但它是空白的。

代码:

String directory = Environment.GetFolderPath (Environment.SpecialFolder.MyDocuments);
        var filename = Path.Combine (directory, "samplefile.txt");

    if (!File.Exists (filename)) {

        File.Create (filename);

        var webClient = new WebClient ();
        webClient.DownloadStringCompleted += (s, e) => {
            var text = e.Result; // get the downloaded text
            File.WriteAllText (filename, text);                   
        };
        var url = new Uri (/**myURL**/);
        webClient.Encoding = Encoding.UTF8;
        webClient.DownloadStringAsync (url);

1 个答案:

答案 0 :(得分:0)

我稍微修改了你的样本,以下内容适用于我。

StreamReader 只是重新读取文件内容,以确认文件中的内容与下载文件的内容相同: -

如果你在那里放置一个断点,你也可以手动检查下载的相同内容。

        string directory = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
        var filename = Path.Combine(directory, "samplefile.txt");

        if (!File.Exists(filename))
        {

            var webClient = new WebClient();

            webClient.DownloadStringCompleted += (s, e) =>
            {
                // Write contents of downloaded file to device:-
                var text = e.Result; // get the downloaded text
                StreamWriter sw = new StreamWriter(filename);
                sw.Write(text);
                sw.Flush();
                sw.Close();
                sw = null;

                // Read in contents from device and validate same as downloaded:-
                StreamReader sr = new StreamReader(filename);
                string strFileContentsOnDevice = sr.ReadToEnd();
                System.Diagnostics.Debug.Assert(strFileContentsOnDevice == text);                    
            };

            var url = new Uri("**url here**, UriKind.Absolute);
            webClient.Encoding = Encoding.UTF8;
            webClient.DownloadStringAsync(url);
        }