我想在我的文件中附加行.我正在使用StreamWriter:
StreamWriter file2 = new StreamWriter(@"c:\file.txt");
file2.WriteLine(someString);
file2.Close();
Run Code Online (Sandbox Code Playgroud)
我的文件输出应该是几个字符串彼此相同,但我只有一行,每次运行此代码时都会被覆盖.
有没有办法让StreamWriter附加到现有文件?
类如Stream
,StreamReader
,StreamWriter
等工具IDisposable
界面.这意味着,我们可以Dispose()
在这些类的对象上调用方法.他们还定义了一个public
名为的方法Close()
.现在让我感到困惑的是,一旦我完成了对象,我该怎么称呼?如果我同时打电话怎么办?
我目前的代码是这样的:
using (Stream responseStream = response.GetResponseStream())
{
using (StreamReader reader = new StreamReader(responseStream))
{
using (StreamWriter writer = new StreamWriter(filename))
{
int chunkSize = 1024;
while (!reader.EndOfStream)
{
char[] buffer = new char[chunkSize];
int count = reader.Read(buffer, 0, chunkSize);
if (count != 0)
{
writer.Write(buffer, 0, count);
}
}
writer.Close();
}
reader.Close();
}
}
Run Code Online (Sandbox Code Playgroud)
如您所见,我编写了using()
构造,自动调用Dispose()
每个对象的方法.但我也称之为Close()
方法.这样对吗?
请告诉我使用流对象时的最佳做法.:-)
MSDN示例不使用using()
构造,并且调用 …
题:
dotnet中的FileStream和StreamWriter有什么不同?
你应该用什么上下文?他们的优势和劣势是什么?
是否可以将这两者合二为一?
我需要让我的代码读取文件是否存在创建else附加.现在它正在读取它是否确实存在创建和追加.这是代码:
if (File.Exists(path))
{
using (StreamWriter sw = File.CreateText(path))
{
Run Code Online (Sandbox Code Playgroud)
我会这样做吗?
if (! File.Exists(path))
{
using (StreamWriter sw = File.CreateText(path))
{
Run Code Online (Sandbox Code Playgroud)
编辑:
string path = txtFilePath.Text;
if (!File.Exists(path))
{
using (StreamWriter sw = File.CreateText(path))
{
foreach (var line in employeeList.Items)
{
sw.WriteLine(((Employee)line).FirstName);
sw.WriteLine(((Employee)line).LastName);
sw.WriteLine(((Employee)line).JobTitle);
}
}
}
else
{
StreamWriter sw = File.AppendText(path);
foreach (var line in employeeList.Items)
{
sw.WriteLine(((Employee)line).FirstName);
sw.WriteLine(((Employee)line).LastName);
sw.WriteLine(((Employee)line).JobTitle);
}
sw.Close();
}
Run Code Online (Sandbox Code Playgroud)
}
我只想将TextBox控件的内容写入Web服务器目录根目录中的文件...如何指定它?
请记住,我正在本地测试...它一直在将文件写入我的程序文件\ visual studio\Common\IDE目录而不是我的项目目录(我假设root是Web服务器触发的时候) .
我的问题与在web.config中指定正确的位置有关吗?我试过了,但仍然没有...
非常感谢...
protected void TestSubmit_ServerClick(object sender, EventArgs e) { StreamWriter _testData = new StreamWriter("data.txt", true); _testData.WriteLine(TextBox1.Text); // Write the file. _testData.Close(); // Close the instance of StreamWriter. _testData.Dispose(); // Dispose from memory. }
这可能是一个非常简单的问题.在C#中,我试图编写一个简单的方法,称为"DebugWrite"方法,将我程序中捕获的任何异常写入本地存储的文本文件中.我当前的代码每次只使用StreamWriter写一个新文件
如何编程以检查文件是否已存在,如果是,则附加到当前文本?IE:
If(~Exist(debug.txt)
{
Write new debug.txt.
}
else if(exist(debug.txt))
{
Append new text.
}
Run Code Online (Sandbox Code Playgroud) 我想知道是否可以将StreamWriter输出重定向到变量
就像是
String^ myString;
StreamWriter sw = gcnew StreamWriter([somehow specify myString])
sw->WriteLine("Foo");
Run Code Online (Sandbox Code Playgroud)
那么myString将包含Foo.我想这样做的原因是重用一个复杂的函数.我应该将它重构为一个String返回函数,但它仍然是一个很好的黑客知道
我无法读到我试过的那些特殊字符
第一种方式#
string xmlFile = File.ReadAllText(fileName);
Run Code Online (Sandbox Code Playgroud)
第二种方式#
FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
StreamReader r = new StreamReader(fs);
string s = r.ReadToEnd();
Run Code Online (Sandbox Code Playgroud)
但是这两个陈述都不理解那些特殊字符.我该怎么读?
更新###
我也尝试所有编码
string xmlFile = File.ReadAllText(fileName, Encoding. );
Run Code Online (Sandbox Code Playgroud)
但仍然不明白那些特殊的人物.
我正在尝试使用DialogResult
和保存文件StringBuilder
.在制作文本后,我调用以下代码来保存文件:
if (dr == DialogResult.OK)
{
StreamWriter sw = new StreamWriter(saveFileDialog1.FileName);
sw.Write(sb.ToString());
sw.Close();
}
Run Code Online (Sandbox Code Playgroud)
我试图将第二个参数添加到StreamWriter
as,Encoding.UTF8
但由于第一个参数是a string
而不是a Stream
,因此它不会编译它.
如何将该字符串转换为流,以便能够将第二个参数作为编码传递?
这样做的原因,是在我的文字是什么地方我有µ
,但是当文件被保存它显示像μ
这样µ
越来越screwd!
谢谢
假设这个C#代码:
using (MemoryStream stream = new MemoryStream())
{
StreamWriter normalWriter = new StreamWriter(stream);
BinaryWriter binaryWriter = new BinaryWriter(stream);
foreach(...)
{
binaryWriter.Write(number);
normalWriter.WriteLine(name); //<~~ easier to reader afterward.
}
return MemoryStream.ToArray();
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:
MemoryStream.ToArray()
合法吗?我使用using
-block作为约定,我担心它会搞砸了.streamwriter ×10
c# ×9
file ×2
.net ×1
asp.net ×1
filestream ×1
flush ×1
idisposable ×1
memorystream ×1
stream ×1
streamreader ×1