我有这个简单的代码,记录将日志附加到文本文件:
public static void RecordToFile(string filename, Log log)
{
TextWriter textWriter = new StreamWriter(Constants.APP_PATH +
"\\" + filename, true);
textWriter.WriteLine(log.ToString());
textWriter.Close();
}
Run Code Online (Sandbox Code Playgroud)
这在Windows窗体应用程序中完美运行.但是,使用instsrv和srvany技巧,我将其作为Windows服务.该服务运行正常,访问数据库,执行查询和所有...除了这个StreamWriter.日志不会得到应有的更新.有什么想法吗?
我只是看StreamReader/Writer的构造函数,我注意它使用UTF8作为默认值.有谁知道这是为什么?我本以为默认使用Unicode会更安全.
如果我写以下语句。
fileStream.Close();
reader.Close();
writer.Close();
Run Code Online (Sandbox Code Playgroud)
reader.Close() 语句执行成功。但我收到错误“无法打开关闭的文件”。在第三条语句 writer.Close()
如果我写
fileStream.Close();
writer.Close();
reader.Close();
Run Code Online (Sandbox Code Playgroud)
第二条语句,即 writer.Close() 本身抛出相同的异常。
有人有想法吗?
我在C#工作,这是我的代码:
Encoding encoding;
StringBuilder output = new StringBuilder();
//somePath is string
using (StreamReader sr = new StreamReader(somePath))
{
string line;
encoding = sr.CurrentEncoding;
while ((line = sr.ReadLine()) != null)
{
//make some changes to line
output.AppendLine(line);
}
}
using (StreamWriter writer = new StreamWriter(someOtherPath, false))//encoding
{
writer.Write(output);
}
Run Code Online (Sandbox Code Playgroud)
在somePath上的文件中,我有像å这样的挪威字符.但是,在someOtherPath中的文件中,我得到问号而不是它们.我认为这是一个编码问题,所以我尝试获取输入文件编码并将其授予输出文件.它没有结果.我尝试使用谷歌浏览器打开文件并为其提供所有可能的编码,但这些字母与输入文件中的字母不同.
C# 我有一个控制台应用程序,可以读取和写入"人员"详细信息的获取/设置列表.它正常工作,直到我尝试将其写入文本文件.有人可以告诉我为什么将"Person"细节的最后一行写入我的文本文件而不是整个列表?
loadData();
Console.WriteLine("All People");
//1st query - just select all people
var queryAllPeople = from person in people select person;
foreach (Person p in queryAllPeople)
{
using (StreamWriter writer = new StreamWriter("people.txt"))
{
writer.WriteLine(p);
}
Console.WriteLine(p);
}
Console.ReadLine();
Run Code Online (Sandbox Code Playgroud) 我想知道如何使用StreamWriter将文本文件写入桌面上的特定位置,例如C:\ Users\tommy\desktop\transaction \?
private void CreateTransaction_Click(object sender, EventArgs e)
{
StreamWriter outputFile;
outputFile = File.CreateText (TID.ToString()+".txt");
outputFile.WriteLine("Investor :" +" " + InvestorNameLabel.Text);
outputFile.WriteLine("Initial Amount" + " " +AmountLabel.Text);
outputFile.WriteLine("Date Invested" +" " +DateLabel.Text);
outputFile.WriteLine("Period Chosen" + " "+DaysInvestedLabel.Text);
outputFile.WriteLine("Rate Chosen" + " " + RateLabel.Text);
outputFile.WriteLine("Total Interest" + " " +InterestAmountLabel.Text);
outputFile.WriteLine("Transaction Number :" + " " + TransactionIDLabel.Text);
outputFile.Close();
MessageBox.Show("Transaction file for Transaction: " + TransactionIDLabel.Text + "Was Created", "Transaction File");
}
Run Code Online (Sandbox Code Playgroud) 我有我在.txt文件中读取的代码.文本文件包含名字和姓氏的值以及数字.
"丹尼尔""默罗""1234"
我正在尝试使用StreamWriter编辑特定值.但是,我现在的代码编辑整个.txt文件并替换所有内容.我只想替换我的案例中的数字值.
static classMates[] readClassMates(classMates[] classMateInfo)
{
StreamReader sr = new StreamReader(@"C:\Users\Callum\Documents\class.txt");
int count = 0;
while (!sr.EndOfStream)
{
classMateInfo[count].first = sr.ReadLine();
classMateInfo[count].last = sr.ReadLine();
string idTemp = sr.ReadLine();
classMateInfo[count].ID = Convert.ToInt32(idTemp);
count++;
}
sr.Close();
return classMateInfo;
static void editClassMates(classMates[] classMateInfo)
{
Console.Write("Who's number would you like to change? ");
string classMateInput = Console.ReadLine();
for (int i = 0; i < classMateInfo.Length; i++)
{
if (classMateInfo[i].last.Equals(classMateInput))
{
Console.Write("Enter new number: ");
string temp = Console.ReadLine();
int classMateNumber = Convert.ToInt32(temp); …Run Code Online (Sandbox Code Playgroud) 我有一个用C#编写的类库,用于将错误和其他信息写入文本或日志文件.问题是它在将文本写入文件时正在改变文本.它由vb.net应用程序调用.
应该写的文字: 02-20-2017 08:17:42 - Personality Update() beginning:
实际写的文字: 02-20-2017 08:17:42 - Per42onaliA17 Up20aAe() beA.D.inninA.D.:
下面是调用该方法来写出字符串的代码.
errHandler.AddLineToLogFile(Me.MasterLogFileName, "Personality Update() beginning:")
Run Code Online (Sandbox Code Playgroud)
以下是被调用的方法.
public void AddLineToLogFile(string logFile, string message, bool replaceExistingFile = false)
{
DateTime now = DateTime.Now;
using (StreamWriter writer = new StreamWriter(logFile, !replaceExistingFile))
{
writer.WriteLine(now.ToString("MM-dd-yyyy HH:mm:ss - " + message));
writer.WriteLine(" ");
}
}
Run Code Online (Sandbox Code Playgroud)
有人可以帮我解决这个问题吗?
我创建了一些代码来创建一个带有初始文本的 txt 文件,但是当我尝试使用新的 msg 再次调用该方法时,它不会将其添加到 txt 文件中。下面是我的代码:
string example = "test";
WriteToLgo(example);
public static void WriteToLog(String inputtext)
{
string location= @"C:\Users\";
string NameOfFile = "test.txt";
string fileName= String.Format("{0:yyyy-MM-dd}__{1}", DateTime.Now, NameOfFile);
string path= Path.Combine(location, fileName);
using (StreamWriter sr= File.CreateText(path))
{
sr.WriteLine(inputtext);
}
}
Run Code Online (Sandbox Code Playgroud)
如果我再次尝试调用该方法,则不会添加新的 msg。任何帮助将不胜感激。
在C#中,是否可以将包含退格的字符串附加到文本文件中,并将所有退格视为"删除最后一个字符"操作?
例如我的文本文件:
这个文件有
两行
某种C#代码是这样的:
string str = "...\b\b\b\b\b\b\b\b\b\b\b\b\b one line."
myFile.Append(str);
Run Code Online (Sandbox Code Playgroud)
执行此代码后,文本文件如下所示:
这个文件有一行.
这些StreamWriter和File类似乎没什么帮助.
如果不在每个附加操作上读取和写入整个文件,我就无法轻易找到实现这一点的好方法,这可能会导致大文本文件出现严重的性能问题.我们的想法是使用这个新功能将日志语句集中写入文本文件.
我的第二个问题是如何处理windows风格的新行字符("\ r \n")?即一个退格键应删除整个单行换行符("\ r \n").
有关如何实现这一点的任何想法?
源代码将受到高度赞赏.
streamwriter ×10
c# ×9
.net ×3
streamreader ×3
encoding ×2
backspace ×1
filestream ×1
linq ×1
service ×1
text-files ×1