如何将内容插入特定位置的现有文件?

时间:2014-12-30 00:59:17

标签: c# .net winforms

我有这堂课:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;

namespace FTP_ProgressBar
{
    class UpdateHtmlFile
    {
        static string HtmlFileFirstPart;
        static string HtmlDynamicUpdatepart;
        static string HtmlLastPart;
        static string HtmlFile;

        public static void UpdateHtml()
        {

            HtmlFile = File.ReadAllText(@"C:\xampp\htdocs\test\index.php");
            int index = -1;
            while (true)
            {
                index = HtmlFile.IndexOf("<div class=\"thumbWrapper\">");
                if (index < 0)
                {
                    break;
                }
                else
                HtmlFileFirstPart = HtmlFile.Substring(0, index + 26);
                break;
            }

            int index1 = HtmlFile.IndexOf("<!-- menu buttons -->");
            while (true)
            {
                index = (index1 - 116);
                if (index < 0)
                {
                    break;
                }
                else
                    HtmlLastPart = HtmlFile.Substring(index);
                break;
            }

            HtmlDynamicUpdatepart = @"<div class='playlist' data-address='mistique_ken_burns' data-title='mistique' data-transitionType='ken_burns' data-bgColor='#e5e5e5' data-playlistSize='165' data-duration='25000'>
                               <ul> 
                                    <li data-address='image1' class='playlistItem' data-imagePath='media/category1/main/01.jpg' data-startScale='1.4' data-endScale='0.5' data-startPosition='tl' data-endPosition='br' 
                                        data-link='http://www.google.com' data-target='_blank' data-description='hello quam.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='http://codecanyon.net/user/Tean' target='_blank'>Link</a>' 
                                        data-youtube='F08U2yCxbYg'><a href='#'><img src='media/category1/thumb/01.jpg' width='120' height='80' alt=''/></a></li>
                              </ul> 
                         </div>";

            HtmlFile = HtmlFileFirstPart + HtmlDynamicUpdatepart + HtmlLastPart;
            StreamWriter w = new StreamWriter(@"c:\newhtml\new.html");
            w.Write(HtmlFile);
            w.Close();
        }
    }
}

HtmlFileFirstPartHtmlLastPart永远不会改变。 每一段时间都会改变的唯一部分是HtmlDynamicUpdatepart

我找到了要添加/插入HtmlDynamicUpdatepart的地点和位置。

问题是原始文件index.php的大小是134kb。 当我创建新文件时,它只有大约24kb文件,因为部分HtmlDynamicUpdatepart替换了该部分文件中已存在的文本。

我想要做的是在文件的这一部分中的现有文本之后插入HtmlDynamicUpdatepart。不要将它添加到文件的末尾,而是将其插入此位置,而不是替换其他现有文本。

1 个答案:

答案 0 :(得分:0)

尝试使用HTMLAgilityPack 然后,您可以将HTML完全加载到HTML文档中并找到您的类。 通过(id / name / class)找到元素后,您可以更改内部HTML并将文档保存回文件。

您可以使用以下内容获取div的内部HTML:

htmlDoc.DocumentNode.Descendants("div")
    .Where(d => d.Attributes.Contains("class") && d.Attributes["class"].Value.Contains("playlist"))
    .First().InnerHtml = "new html";

然后使用:

htmlDoc.Save("File Path");

将其保存回文件