标签: streamwriter

StreamWriter的默认缓冲区大小是多少

对于public StreamWriter(Stream stream)构造函数,MSDN

使用UTF-8编码和默认缓冲区大小为指定的流初始化StreamWriter类的新实例.

我想使用其他构造函数重载之一,但想使用默认的缓冲区大小.什么是默认缓冲区大小?MSDN没有说任何地方. 鲁本斯法里亚斯的答案在这里说它是"4 KiB"(无论那意味着...... KB我猜?)但是没有任何证据可以证实这一点.

.net streamwriter

26
推荐指数
1
解决办法
1万
查看次数

使用StreamWriter写入MemoryStream将返回空

我不确定我做错了什么,看过很多例子,但似乎无法让这个工作.

public static Stream Foo()
{
    var memStream = new MemoryStream();
    var streamWriter = new StreamWriter(memStream);

    for (int i = 0; i < 6; i++)
        streamWriter.WriteLine("TEST");

    memStream.Seek(0, SeekOrigin.Begin);
    return memStream;
}
Run Code Online (Sandbox Code Playgroud)

我正在对这个方法进行一个简单的测试,试图让它通过,但无论如何,我的收集计数为0.

[Test]
public void TestStreamRowCount()
{
    var stream = Foo();

    using (var reader = new StreamReader(stream))
    {
        var collection = new List<string>();
        string input;

        while ((input = reader.ReadLine()) != null)
            collection.Add(input);

        Assert.AreEqual(6, collection.Count);
    }
}
Run Code Online (Sandbox Code Playgroud)

注意:我在上面修改了一些语法而没有在Test方法中进行编译.更重要的是第一种似乎返回空流的方法(我的reader.ReadLine()总是读取一次).不确定我做错了什么.谢谢.

c# memorystream streamwriter

24
推荐指数
3
解决办法
4万
查看次数

c#替换文件中的字符串

替换HTML文件内容的一部分时,String.Replace似乎无法正常工作.例如,String.Replace替换</body></html>blah blah blah </body></html> html> - 注意第二个HTML结束标记未正确关闭,因此在用户在浏览器中呈现页面时显示.

任何人都知道它为什么不按预期工作?

StreamReader sr = fi.OpenText;
String fileContents = sr.ReadToEnd();
sr.close();
fileContents = fileContents.Replace("<body>", "<body onload='jsFx();' />");
fileContents = fileContents.Replace("</body>","blah blah blah </body>");

StreamWriter sw = new StreamWriter(fi.OpenWrite());
sw.WriteLine(contents);
sw.close();
Run Code Online (Sandbox Code Playgroud)

c# file-io fileinfo streamwriter

23
推荐指数
2
解决办法
4万
查看次数

如何覆盖txt文件中的数据?

可能重复:
任何人都可以告诉为什么在使用StreamWriter保存数据时仍然显示以前的数据

我有WPF C#应用程序,读取和写入.txt文件,我知道如何写行但行,但我如何覆盖已经是文件的文本.这就是我要写到文本文件的下一行的内容,但是我希望不仅仅是写入下一行,谢谢.

using (StreamWriter newTask = new StreamWriter("test.txt", true)) 
{
    newTask.WriteLine(name[i].ToString());    
}
Run Code Online (Sandbox Code Playgroud)

c# text overwrite streamwriter

23
推荐指数
2
解决办法
8万
查看次数

NodeJS将二进制缓冲区写入文件

我无法重写我从二进制缓冲区获取的文件,我已检查过原始文件并且所有字节都相同.

这是从NodeJS创建的文件:

# hd test.txt  | head
00000000  47 49 46 38 39 61 32 00  32 00 f7 00 00 96 8c 73  |GIF89a2.2.?....s|
00000010  66 5e 45 c6 bb 9f 7b 72  5a 47 47 47 8a 81 65 ca  |f^E?.{rZGGG..e?|
00000020  c1 a6 c9 c1 ac ee ea dd  c8 c5 bc 8c 87 7a d3 c9  |??????????..z??|
00000030  ab 43 3b 26 eb e5 d1 fa  fa fa e5 e4 e2 a6 9d 83  |?C;&??????????..|
00000040 …
Run Code Online (Sandbox Code Playgroud)

binary streamwriter node.js

22
推荐指数
2
解决办法
5万
查看次数

将字符串写入文件

我想写一些文件.我找到了这段代码:

private void writeToFile(String data) {
    try {
        OutputStreamWriter outputStreamWriter = new OutputStreamWriter(context.openFileOutput("config.txt", Context.MODE_PRIVATE));
        outputStreamWriter.write(data);
        outputStreamWriter.close();
    }
    catch (IOException e) {
        Log.e("Exception", "File write failed: " + e.toString());
    } 
}
Run Code Online (Sandbox Code Playgroud)

代码似乎非常合乎逻辑,但我在手机中找不到config.txt文件.
如何检索包含字符串的文件?

android streamwriter

22
推荐指数
2
解决办法
5万
查看次数

StreamWriter结束行使用Lf而不是CrLf

我正在使用StreamWriter输出文本文件,但我想用Lf结束我的WriteLine而不是默认的CrLf.有没有一种简单的方法可以使用StreamWriter中内置的参数来完成此操作?

我现在感觉自己像个白痴,但我会把问题留在这里只是为了笑.这是漫长的一天......

.net text streamwriter

19
推荐指数
1
解决办法
7240
查看次数

FileStream和StreamWriter - 如何在写入后截断文件的其余部分?

var fs = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite);
using(var writer = new StreamWriter(fs))
    writer.Write(....);
Run Code Online (Sandbox Code Playgroud)

如果文件以前包含文本并且新写入的文本比文件中已有的文本短,那么如何确保文件中过时的尾随内容被截断?

请注意,在这种情况下,以截断模式打开文件不是一个选项.收到FileStream对象时文件已经打开.上面的代码只是为了说明流的属性.

编辑

扩展下面的答案,解决方案是:

var fs = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite);
using(var writer = new StreamWriter(fs))
{
    writer.Write(....);
    writer.Flush();
    fs.SetLength(fs.Position);
}
Run Code Online (Sandbox Code Playgroud)

.net io filestream streamwriter

18
推荐指数
1
解决办法
8140
查看次数

StreamWriter和IFormatProvider

如何将IFormatProvider传递给StreamWriter?

具体来说我想创建一个
new StreamWriter("myfile.txt", CultureInfo.InvariantCulture);

TextWriter和StringWriter在构造函数中有一个参数,但StreamWriter没有.
属性stringWriter.FormatProvider是readonly.

我可以想到三个似乎不好的解决方案:

  • 更改Thread.CurrentCulture:这将在库中,所以我宁愿不更改任何全局设置,即使是暂时的.
  • sw.WriteLine(InvariantCulture ,,):在很多函数中有很多sw.WriteLine().我真的很想避免弄乱他们所有人.
  • 首先使用StringWriter然后将字符串写入文件:由于流可能变得非常大,这将产生巨大的开销.

有没有办法为StreamWriter指定FormatProvider?如果我可以设置属性,则基于TextWriter的继承,StreamWriter必须具有处理此功能的方法.

c# cultureinfo filestream streamwriter iformatprovider

18
推荐指数
1
解决办法
4562
查看次数

使用StreamWriter不起作用\n(C#)

我的C#Stream Writer有问题.我使用以下代码:

//Constructor
public EditorTXTFile
{
   FileStream f = File.Create(System.IO.Directory.GetCurrentDirectory() + "\\Output.txt");
   f.Close();
}

//Function AddText
public void AddLogFileText(string text)
{         
   string text = "l1\n\rl2\n\rl3\n\nl5";

   StreamWriter writer = new StreamWriter(System.IO.Directory.GetCurrentDirectory() + "\\Output.txt", true);
   writer.Write(text);         

   writer.Close();
}
Run Code Online (Sandbox Code Playgroud)

当我打开Output.txt它显示为\n或\ra█(这意味着不显示符号)并且整个字符串在一行...稍后应该将文本移交给函数,所以我不能写文本使用.WriteLine,因为我不知道实际的字符串是在同一行还是在新行中.

是什么让我错了?

谢谢你的帮助.

c# newline streamwriter

17
推荐指数
1
解决办法
5万
查看次数