覆盖文件,但只覆盖非空格的部分
我正在寻找一种用00000在.dat文件中覆盖某些零件的方法.为此,我有一个带有此类内容的StringBuilder: "00000000 0000000000000000 " 现在,我正在寻找一种用零覆盖文件中的零件的方法,而Justs则将零件的内容保留在空格中. 所以如果我有 "AUEUIGHEVjerhvgm,eiouhegfwoedjkjjjjjjjjjjjjjjje" 我希望它变成 "00000000Vjerhvgm,eio0000000000000000jjjjjjjjjje" 这种方法是否存在?还是我应该以另一种方式完成此任务? 解决方案 var byteCharZero = Convert.ToByte('0'); var stringBuilder = new StringBuilder(" 00000000 0000000000000000 "
10 2024-04-26
编程技术问答社区
在StreamWriter的生命周期结束时将其冲洗掉
我有一个类似单元的类,可以进行一些记录输出: class Foo { private static Foo instance; private System.IO.StreamWriter os; private Foo() { this.os = System.IO.File.CreateText( "D:/tmp/test" ); } public static Foo Instance { get { if ( instance == null ) instance = new Foo(); return instance; } } public void Log( string s ) { os.Write( s ); }
10 2024-04-26
编程技术问答社区
在csv文件中保存数据
我有一个问题可以将数据保存在.csv文件中. void WriteLog(DataRow rzad) { StreamWriter sw = new StreamWriter("log.csv", true); int iColCount = 8; for (int i = 0; i
8 2024-04-26
编程技术问答社区
如何使用C#在cmd中以管理员身份运行多行?
是否可以在一个高架命令提示符中运行多个命令的工作或功能? 我尝试设置USESHELLEXECUTE = false并使用StreamWriter,但是我读到,如果这样做,我将无法使用高架命令提示符. 如果我设置了useshellexecute = true,我可以使用抬高cmd,但是我需要使用process.argument(),它一次只能让我一次在一个cmd过程中运行一个命令. 我有一个循环,一次在不同的CMD过程中一次运行一个命令,并且可以正常运行.但是,当我每次要求我允许我在高架CMD中运行新线路时,我必须单击"是"时,这会很烦人.我宁愿一次单击"是",然后让它自行运行线条. 这是我到目前为止得到的一部分: System.Diagnostics.Process process = new System.Diagnostics.Process(); System.Diagnostics.ProcessStartInfo i
14 2024-04-26
编程技术问答社区
StreamWriter不会写入日志文件
此代码将在C:\ temp中创建" output.txt",如果尚不存在.但是,log.WriteLine();对我不起作用.当我打开文件时,我看不到它.为什么这是? private static string LogFile = @"C:\Temp\output.txt"; private StreamWriter log; if (!File.Exists(@"" + LogFile)) { log = new StreamWriter(@"" + LogFile); } else { log = File.AppendText(@"" + LogFile); } log.WriteLine("["+DateTime.Now + "]: "); 解决方案 您需要关闭StreamWriter.最好使用using块为此,因为它可以保证StreamWriter即使抛出了例外. using (var log = GetLog()){ log.Writ
2 2024-04-26
编程技术问答社区
Xml序列化和写入器
在一个类中,我使用按钮创建一个单击XML文档: private void buttonCreate_Click(object sender, RoutedEventArgs e) { DialogResult result = folderElg.ShowDialog(); if (result == System.Windows.Forms.DialogResult.OK) { textBoxPath.Text = folderElg.SelectedPath; userConfigurePath = folderElg.SelectedPath; } XmlDocument toolConfig = new XmlDocument(); XmlNode myRoot;
2 2024-04-25
编程技术问答社区
文件编码不起作用
在我的代码中 string[] Lines = reactor.GetMergedLines(); string fileName = "foo.bar"; StreamWriter sw = new StreamWriter(File.Open(fileName, FileMode.CreateNew), Encoding.GetEncoding(28605)); foreach (string line in Lines) { sw.WriteLine(line); } sw.Close(); 创建的文件未用给定的代码epage编码.线上充满了ISO-8859-1文件中的字符串.我尝试使用代码页编号Encoding.GetEncoding(28605),它的名称Encoding.GetEncoding("ISO-8859-15")和File.WriteAllLines(fileName, Lines, Encoding.GetEncoding(28605))而不是s
2 2024-04-25
编程技术问答社区
通过NamedPipe发送一个多行字符串?
如何在名为Pipe上的空白行发送一个多行字符串? 如果我发送字符串 string text= @"line 1 line2 line four "; StreamWriter sw = new StreamWriter(client); sw.Write(text); 我仅在服务器端"第1行" : StreamReader sr = new StreamReader(server); string message = sr.ReadLine(); 当我尝试这样的事情 StringBuilder message = new StringBuilder(); string line; while ((line = sr.ReadLine()) != null) { message.Append(line + Environment.NewLine); } 在客户端连接时,它悬挂在循环中,仅在客户端断开连接时发布. 有什么想法,我如何在不悬
0 2024-04-25
编程技术问答社区
多线程的TcpClient在长时间打开连接后发送超时
我在连接长时间打开(几个小时或过夜)后,在多线程应用程序中使用发送超时的TCPCLIENT关闭.网络流由两个线程,一个UI线程和背景线程使用.有一个用于读取传入数据的流读器,以及用于传出数据的流词器.流程阅读器仅访问过一个线程(背景一个),但是流媒体词被UI线程和背景线程访问. 发生的事情是,如果我打开连接并连接到远程服务器,我可以立即发送和接收数据而没有任何问题.我没有任何发送超时,并且数据已正确发送和接收.但是,如果然后走开,几个小时不发送任何数据,然后返回并开始发送数据(如果有助于使其有意义,这是一个聊天应用程序),则套接字将超时发送.在我走开的那段时间里,所有接收数据都没有问题.此外,有效连接的远程服务器轮询,我的客户端必须对此做出响应,并且由于连接开放了几个小时,因此必须正确发送响应.但是,这种投票响应仅在背景线程上发送.我输入的数据是从UI线程发送的,这就是超时发生的地方. 我猜这与并发访问有关,但是我无法弄清楚是什么原因导致了它的原因,以及为什么我最初可以从UI
8 2024-04-25
编程技术问答社区
当表单退出时,关闭流读取和流写入器
大家好,这里有些麻烦. 因此,我有一个加载文件的加载按钮,并保存按钮保存文件.我还有一个关闭程序的退出按钮.我需要帮助的是,当我关闭程序时,我不会检查是否有任何尚未关闭的streamReader或StreamWriter事物. 到目前为止我拥有的东西: 在顶部,我宣告这些家伙 bool isDirtyBoolean = false; string moreData = ""; 我的负载按钮看起来像 private void loadToolStripMenuItem_Click(object sender, EventArgs e) { //begin in the project folder openFileDialog1.InitialDirectory = Directory.GetCurrentDirectory(); //display the file open d
8 2024-04-25
编程技术问答社区
该进程不能访问该文件,因为它正被另一个进程使用。
我正在尝试执行以下操作: var path = Server.MapPath("File.js")); // Create the file if it doesn't exist or if the application has been restarted // and the file was created before the application restarted if (!File.Exists(path) || ApplicationStartTime > File.GetLastWriteTimeUtc(path)) { var script = "..."; using (var sw = File.CreateText(path)) { sw.Write(script); } } 有时有时会出现以下错误: 该过程无法访问文件'... \ file.js',因为它正在 由另一个过程 使用 我在这里研
2 2024-04-25
编程技术问答社区
将SQL信息写入一个TXT文件
我试图从数据库中读取一排信息,然后将其写入TXT文件.我已经弄清楚了其中的大多数,但是我会收到以下错误"字段初始化器无法引用非静态字段,方法或属性'reader_writer.filewriter.filepath'",而我不知道为什么.有人可以解释我的问题吗? using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using System.Data.SqlClient; using System.Data.Common; namespace reader_writer { public class filewriter { //public string filePath = ""; bool fileExists = false; string filePath = Environment.GetFo
0 2024-04-24
编程技术问答社区
用using语句声明静态的streamwriter vs
我是C#的新手,所以请允许我一些无知:) (我已经尝试搜索以了解我看到的性能差异的原因,但到目前为止还没有确切的答案,所以我想我在这里问知识渊博的受众...) 基本上...如果我使用流词器,例如: public static class Logging { readonly static object DebugWriter = new object(); public static void Log(string msg) { lock (DebugWriter) { using (StreamWriter writer = new StreamWriter("Debug.txt", true)) { writer.WriteLine(DateTime.UtcNow.ToString("HH:mm:ss.ffff") + " " + msg); } } } } 然后,假设我通过
10 2024-04-23
编程技术问答社区
当StreamWriter打开时,修改过的日期没有更新
我有一个记录解决方案,并写入文本文件,该文本文件在运行时会打开.我使用StreamWriter写入文件.我的记录器代码只是(打开流并写入): public void Open(string filePath, bool append) { if (this.logWriter != null) throw new InvalidOperationException( "Logger is already open"); if (!Directory.Exists(Path.GetDirectoryName(filePath))) Directory.CreateDirectory(Path.GetDirectoryName(filePath)); this.logWriter = new StreamWriter(filePath, appen
2 2024-04-23
编程技术问答社区
添加到文本文件而不删除
我需要在一行中添加4个变量数字,但是使用当前代码,它只是替换了数字,从而使其毫无意义. using (StreamWriter writer = new StreamWriter("build.txt")) { writer.Write(" " + layer + " " + x + " " + y + " " + block); Console.WriteLine("[" + layer + "," + x + "," + y + "," + block + "]"); } 所以我需要它写... l x y b l x y b l x y b l x y b ... ...但是它并没有像那样奏效,互联网并不特别有用,希望在这里可以有所帮助. 解决方案 我将使用 File.AppendAllText 个人. ..这样,您可以只指定要编写的文本,该方法将打开文件,附加文本,然后关闭文件. 如果您真的想
2 2024-04-23
编程技术问答社区
写入文件并处理重复条目
背景: 1按钮 1个需要写入的文件 1个文本框 1个numericupdown 因此,在我的应用程序中,我需要写入包含几行的文件.输入取自文本框和数字down控件,它包括一串通用格式string.Format("{0}|{1}", TextBoxInput, NumericUpDownInput);. 我需要的帮助实际上是在添加新行之前检查重复条目.基本上,如果用户决定输入他们已经拥有的东西(以更多的"时间"更新),则该程序应检查新输入的输入是否匹配其中的一条,如果确实如此,则 parts应加在一起并更换原始值,同时维护{0}部分. 我的方法: 我试图解决此问题的方法是创建一个称为newFile和a for loop的类型字符串列表,用于循环循环浏览originalFile,以便发现新输入是否匹配已经输入的一个. 然后,两种可能的情况:a)如果确实如此,只需替换数字输入零件并将其添加到newfile,b)如果没有,只需将其添加到newfile. 最后
4 2024-04-23
编程技术问答社区
当系统突然关闭时,StreamWriter 在文件末尾写入 NUL 字符
我正在编写一些测试应用程序,以使用StreamWriter将一些文本写入文本文件.在执行WriteLine方法时,系统突然关闭.重新启动机器后,我观察到文件末尾有许多NUL字符. 我已经搜索了包括MSDN在内的许多网站,但尚未找到解决此问题的解决方案. 任何人都可以帮助我解决这个问题吗? 如果我们执行以下步骤,可以很容易地复制: 创建WindowsApplication并在其上放置一个按钮. 在按钮单击事件处理程序中写下以下代码: 私有void button1_click(对象发送者,EventArgs E) { string str = "Welcome to the C Sharp programming world with a test application using IO operations."; StreamWriter sw = new StreamWriter(fileName, true, Encod
6 2024-04-22
编程技术问答社区
StreamWriter不能创建新文件
我正在尝试每小时创建一个新的日志文件,以下在服务器上运行以下代码.当天的第一个日志文件正在创建和写入罚款,但是当天没有进一步的日志文件.有什么想法可能出了什么问题?也没有例外. private void LogMessage(Message msg) { string name = _logDirectory + DateTime.Today.ToString("yyyyMMddHH") + ".txt"; using (StreamWriter sw = File.AppendText(name)) { sw.WriteLine(msg.ToString()); } } 解决方案 使用DateTime.Today的使用时间部分.您应该使用DateTime.Now或DateTime.UtcNow,以便返回的DateTime包含一个小时不同的小时. 其他解决方案 今天只给当前日期.因此,HH总是" 00". 尝试date
6 2024-04-22
编程技术问答社区
文件共享违规发生在创建文件之后?
因此,我正在尝试创建一个.txt文件,然后向其写一些愚蠢的数据.但是我正在遭受分享违规行为.我感觉到这可能是因为我试图在创建文件后直接为文件创建一个流词,但这没什么意义.所以我有点迷路了.我尝试删除班级中的所有其他流曲和读者,但错误的行除外,我仍然遭受违规行为.我遇到的错误, IOException: Sharing violation on path C:\Users\USER\Desktop\Accessible\Assets\IO\Books\A community of learners\frog\frog_status.txt System.IO.FileStream..ctor (System.String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, Boolean anonymous, FileOptions options) System.IO.FileStre
8 2024-04-22
编程技术问答社区
修改文件流
我现在正在上一个课程,该课程将允许编辑非常大的文本文件(4GB+).好吧,这听起来有些愚蠢,但我不明白如何在流中修改文本. 这是我的代码: public long Replace(String text1, String text2) { long replaceCount = 0; currentFileStream = File.Open(CurrentFileName, FileMode.Open, FileAccess.ReadWrite, FileShare.None); using (BufferedStream bs = new BufferedStream(currentFileStream)) using (StreamReader sr = new StreamReader(bs)) { string line; while ((line = sr.ReadLine()) != nu
2 2024-04-22
编程技术问答社区