我不确定我做错了什么,看过很多例子,但似乎无法让这个工作.
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()总是读取一次).不确定我做错了什么.谢谢.
替换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) 我有WPF C#应用程序,读取和写入.txt文件,我知道如何写行但行,但我如何覆盖已经是文件的文本.这就是我要写到文本文件的下一行的内容,但是我希望不仅仅是写入下一行,谢谢.
using (StreamWriter newTask = new StreamWriter("test.txt", true))
{
newTask.WriteLine(name[i].ToString());
}
Run Code Online (Sandbox Code Playgroud) 我无法重写我从二进制缓冲区获取的文件,我已检查过原始文件并且所有字节都相同.
这是从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) 我想写一些文件.我找到了这段代码:
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文件.
如何检索包含字符串的文件?
我正在使用StreamWriter输出文本文件,但我想用Lf结束我的WriteLine而不是默认的CrLf.有没有一种简单的方法可以使用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) 如何将IFormatProvider传递给StreamWriter?
具体来说我想创建一个
new StreamWriter("myfile.txt", CultureInfo.InvariantCulture);
TextWriter和StringWriter在构造函数中有一个参数,但StreamWriter没有.
属性stringWriter.FormatProvider是readonly.
我可以想到三个似乎不好的解决方案:
有没有办法为StreamWriter指定FormatProvider?如果我可以设置属性,则基于TextWriter的继承,StreamWriter必须具有处理此功能的方法.
我的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,因为我不知道实际的字符串是在同一行还是在新行中.
是什么让我错了?
谢谢你的帮助.
streamwriter ×10
c# ×5
.net ×3
filestream ×2
text ×2
android ×1
binary ×1
cultureinfo ×1
file-io ×1
fileinfo ×1
io ×1
memorystream ×1
newline ×1
node.js ×1
overwrite ×1