【问题标题】:How to save string content to a local file如何将字符串内容保存到本地文件
【发布时间】:2015-07-28 03:53:57
【问题描述】:

我正在开发一个通过网络浏览器控件显示网页的应用程序。

当我点击保存按钮时,带有图像的网页应该存储在本地存储中。它应该以 .html 格式保存。

我有以下代码:

WebRequest request = WebRequest.Create(txtURL.Text);
WebResponse response = request.GetResponse();
Stream data = response.GetResponseStream();
string html = String.Empty;

using (StreamReader sr = new StreamReader(data))
{
    html = sr.ReadToEnd();
}

现在字符串 html 包含网页内容。我需要把它保存到D:\Cache\

如何将 html 内容保存到磁盘?

【问题讨论】:

    标签: c# c#-4.0 c#-3.0


    【解决方案1】:

    您可以使用此代码将您的 HTML 字符串写入文件:

    var path= @"D:\Cache\myfile.html");
    File.WriteAllText(path, html);
    

    进一步细化:从您的(文本)URL 中提取文件名。

    更新: 有关详细信息,请参阅Get file name from URI string in C#。这个想法是:

    var uri = new Uri(txtUrl.Text);
    
    var filename = uri.IsFile 
      ? System.IO.Path.GetFileName(uri.LocalPath)
      : "unknown-file.html";
    

    【讨论】:

    • 嗨 jimileo.. 它工作正常。但是如何使用特定的网站名称另存为..
    • 字符串文件名 = txtURL.Text; var path= (@"D:\Cache\myfile.html"); File.WriteAllText(路径,html);现在文件名具有网页名称的名称..所以我应该在哪里包含这个文件名以保存为网站的原始名称。我不想拆分hreflink ..这里的路径变量有“D:\ Cache \ myfile.html”,每当我将网页保存到带有myfile.html的文件夹中时。我想用txtURL.text值保存..请给出解决方案。
    • var path= @"D:\Cache\") + filename;
    • 我的建议:步骤(1)您接受此答案,因为它解决了您最初的问题。 (2) 你为你的新问题陈述了一个新问题。这是有道理的,因为您必须提供更多信息。您当前的代码看起来如何?你的文件名应该是什么样子的?您的预期和实际文件名是什么?例如。只是 URL 的文件名部分,或者 - 因为您想实现缓存 - URL 的 url 编码版本等等。
    • 嗨 JimiLoe.. 我得到了我想要的输出。谢谢。
    【解决方案2】:

    您必须在保存按钮上编写以下代码

    File.WriteAllText(路径, browser.Document.Body.Parent.OuterHtml, Encoding.GetEncoding(browser.Document.Encoding));

    现在“Body.parent”必须保存整个页面,而不是只保存部分。

    检查一下。

    【讨论】:

      【解决方案3】:

      据我所知,.NET Framework 没有内置任何内容。

      所以我的方法如下:

      • 使用System.NET.HttpWebRequest 获取主 HTML 文档作为 字符串或流(简单)。 (你已经完成了)

      • 将此加载到HTMLAgilityPack 文档中,您现在可以轻松地 查询文档以获取所有图像元素、样式表的列表 链接等。

      • 然后为每个文件发出单独的 Web 请求并保存 他们到一个子目录。

      • 最后更新主页中的所有相关链接指向 子目录中的项目。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-10-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-12
        • 1970-01-01
        • 2012-02-03
        相关资源
        最近更新 更多