是什么区别StringWriter和StringBuilder,当我应该使用一个或其他?
我意识到在java中GC最终会清理对象,但是我问是不是关闭你的字符串编写器是不好的做法,目前我这样做:
 private static String processTemplate(final Template template, final Map root) {
        StringWriter writer = new StringWriter();
        try {
            template.process(root, writer);
        } catch (TemplateException e) {
            logger.error(e.getMessage());
        } catch (IOException e) {
            logger.error(e.getMessage());
        }
        finally {
        }
        return writer.toString();
    }
我应该关闭编写器并创建一个像这样的新String:
String result = "";
...
finally {
  result = writer.toString();
  writer.close();
}
这样做更好吗?
我想清除XmlTextWriter和StringWriter中的所有内容.Flush()没有成功.
XmlDocument doc = new XmlDocument();
StringWriter sw = new StringWriter();
XmlTextWriter xw = new XmlTextWriter(sw);
xw.WriteStartElement("AddPhoneQual");
xw.WriteElementString("Type", "B");
xw.WriteElementString("PhoneNumber", bookingDetails.PassengerList[0].PhoneNumber);
xw.WriteEndElement(); //结束AddPhoneQual
doc.LoadXml(sw.ToString());
现在,我需要清除所有内容并开始用清晰的xw编写.
xw.Flush();
sw.Flush();
他们没有工作.
我有一个StringWriter变量,sw它由FreeMarker模板填充.填好后sw,如何将其打印到文本文件中?
我有一个for循环如下:
for(2 times)
{
    template.process(data, sw);
    out.println(sw.toString());
}
现在,我只是输出到屏幕.我如何为文件执行此操作?我想,对于每个循环,我的意思sw都会改变,但我希望每个循环的数据都附加在文件中.
编辑:  
我尝试了下面的代码.当它运行时,它确实显示file.txt已经更改,但是当它重新加载时,文件仍然没有任何内容.
sw.append("CheckText");
PrintWriter out = new PrintWriter("file.txt");
out.println(sw.toString());
什么是Java StringWriter,什么时候应该使用它?
我已阅读文档并查看此处,但我不明白何时应该使用它.
我有一个应用程序,如果该文件尚不存在,则会创建一个文本文件,然后向其写入内容.当我创建并立即写入文件时,它第一次工作得很好.我的问题是,下次执行此代码并且文件已经创建时,它会在我尝试写入文件时抛出异常.我得到"文件被另一个进程使用"错误.
所以我创建它之后似乎需要关闭文件?我不知道怎么做,但它可能非常简单.我会发布一些代码,但它不是必需的,我只是使用一个香草味的字符串构建器和流编写器.
    Private Sub createFileLocations()
        If Not Directory.Exists("./Path") Then
            Directory.CreateDirectory("./Path")
        End If
        If clsGeneralSettings.Printer1 IsNot Nothing Then
            If Not File.Exists("./Path/File1" & ".txt") Then
                File.Create("./Path/File1" & ".txt")
            End If
        End If
    End Sub
Private Sub AppendTextFile(randomId As String, PrintDate As Date, PrintName As String)
    Try
        Dim _stringBuilder As StringBuilder = New StringBuilder
        Dim _StreamWriter As StreamWriter
        Dim fileName As String
        If PrintName = clsGeneralSettings.Printer1 Then
            fileName = "./Path/File1" & ".txt"
            qPrinter1.Enqueue(randomId)
            If qPrinter1.Count > 10 Then
                qPrinter1.Dequeue()
            End If
             _stringBuilder.AppendLine(PrintDate + …我需要从我的webbrowser中获取所有属性.当前,我正在使用GetAttribute(),但这样,我需要知道属性的名称.想象一下,我不知道我的webbrowser中有什么.我的C#代码:
        StringWriter strWriter = new StringWriter();            
        XmlWriter xWriter = XmlWriter.Create(strWriter, new XmlWriterSettings() { Indent = true });
        xWriter.WriteStartElement("Items");
        foreach (HtmlElement el in webBrowser1.Document.GetElementsByTagName("TEXTAREA"))
        {
            xWriter.WriteStartElement("Item");
            xWriter.WriteElementString("GUID", el.Id);
            xWriter.WriteElementString("Type", el.GetAttribute("type").ToUpper());
            xWriter.WriteElementString("Name", el.Name);
            xWriter.WriteElementString("Value", el.GetAttribute("value"));
            xWriter.WriteElementString("MaxLength", el.GetAttribute("maxlength"));
            xWriter.WriteEndElement();
        }
我搜索了很多,但我没有找到任何有用的东西.
我使用以下内容呈现字符串的局部视图...
        protected string RenderPartialViewToString(string viewName, object model)
    {
        if (string.IsNullOrEmpty(viewName))
            viewName = ControllerContext.RouteData.GetRequiredString("action");
        ViewData.Model = model;
        using (var sw = new StringWriter())
        {
            ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName);
            var viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw);
            viewResult.View.Render(viewContext, sw);
            return sw.GetStringBuilder().ToString();
        }
    }
然而它返回带有如下所示的奇怪标签的html ...(我已经包含了一个小部分作为它的大视图)
<$A$><div</$A$><$B$> class="modal hide fade"</$B$><$C$> id="dialog"</$C$><$D$> 
整个HTML都会发生这种情况.这部分看起来应该是......
<div class="modal hide fade" id="dialog" style="display: none;">
asp.net-mvc viewengine stringwriter asp.net-mvc-partialview asp.net-mvc-4
我想逐行读取文本文件并编辑特定行。因此,我将文本文件放入字符串变量中,例如:
string textFile = File.ReadAllText(filename);
我的文本文件如下:
Line A
Line B
Line C
Line abc
Line 1
Line 2
Line 3
我有一个特定的字符串(=“abc”),我想在此文本文件中搜索它。因此,我正在阅读这些行,直到找到字符串并在找到字符串之后转到第三行(“第 3 行”-> 该行始终不同):
string line = "";
string stringToSearch = "abc";
using (StringReader reader = new StringReader(textFile))
{
    while ((line = reader.ReadLine()) != null)
    {
        if (line.Contains(stringToSearch))
        {
            line = reader.ReadLine();
            line = reader.ReadLine();
            line = reader.ReadLine();
            //line should be cleared and put another string to this line.
        }
    }
}
我想清除第三个读取行并将另一个字符串放入该行并将整个保存string到textFile.
我怎样才能做到这一点?
我正在使用.net并且需要获取一些html文本,所以我想我会一起使用HtmlTextWriter和StringWriter来获得格式正确的html.但是,尽管编写代码的方式各不相同,我仍然会收到静态代码分析器的警告(使用Microsoft All Rules).在下面的代码示例中,我在注释中显示代码分析器警告.为了简化代码,我实际上并没有对HtmlTextWriter进行任何调用(您将在每个函数中看到对该效果的注释).如何正确编写代码以避免警告?
// CA2000 : Microsoft.Reliability : In method 'Default.Func1()', object 'stringWriter' is not disposed along all exception paths. Call System.IDisposable.Dispose on object 'stringWriter' before all references to it are out of scope.
public static string Func1()
{
    string html;
    StringWriter stringWriter;
    using (var writer = new HtmlTextWriter(stringWriter = new StringWriter()))
    {
        // You would do some stuff with the writer here, but not for this example.
        html = stringWriter.ToString();
    }
    return html;
}
// CA2202 : Microsoft.Usage : …stringwriter ×10
.net ×3
c# ×3
java ×3
string ×2
asp.net-mvc ×1
ca2000 ×1
ca2202 ×1
file-io ×1
freemarker ×1
html ×1
io ×1
stringreader ×1
vb.net ×1
viewengine ×1
xml ×1
xmlwriter ×1