How do I read and edit a .txt file in C#?

故事扮演 提交于 2019-11-28 10:06:00

Added some LINQ for fun and profit (room for optimization ;) ):

System.IO.File.WriteAllLines(
    "outfilename.txt",
    System.IO.File.ReadAllLines("infilename.txt").Select(line =>
        "{" +
        string.Join(", ",
            line.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries)
        ) + "}"
    ).ToArray()
);

Something like this: (NOT TESTED)

string filename = @"c:\yourfilename.txt";
StringBuilder result = new StringBuilder();

            if (System.IO.File.Exists(filename))
            {
                using (StreamReader streamReader = new StreamReader(filename))
                {
                    String line;
                    while ((line = streamReader.ReadLine()) != null)
                    {
                        string newLine = String.Concat("{", line, "}", Environment.NewLine);
                        newLine = newLine.Replace(" ", ", ");
                        result.Append(newLine);
                    }
                }
            }

using (FileStream fileStream = new FileStream(filename , fileMode, fileAccess))
            {
                StreamWriter streamWriter = new StreamWriter(fileStream);
                streamWriter.Write(result);
                streamWriter.Close();
                fileStream.Close();
            }
cw22

you should work on the logic first instead of directly asking people to provide that for you. as for reading/writing a file, here you go:

//write      
FileStream fs = new FileStream("file_name", FileMode.Create);
StreamWriter w = new StreamWriter(fs, Encoding.UTF8);
w.WriteLine("text_to_write");
w.Flush();
w.Close();
fs.Close();

//read
fs = new FileStream("file_name", FileMode.Open);
StreamReader r = new StreamReader(fs, Encoding.UTF8);
Console.WriteLine(r.ReadLine());
r.Close();
fs.Close();

Read each line.

Add a bracket before the string and after

Then replace space " " by ", " (comma and space)

string [] lines = File.ReadAllLines("input.txt");
var processed = lines.Select(line => string.Format("{{{0}}}", line.Replace(" ", ", ")));
File.WriteAllLines("output.txt",processed.ToArray());
Donut

You'll need to use the FileStream class to open the file, the StreamReader class to read from the file, and the StreamWriter class to write back to the file.

You can create a FileStream like this:

FileStream file = new FileStream("FileName", FileMode.Open, FileAccess.ReadWrite);

Then wrap the FileStream in a StreamReader:

StreamReader reader = new StreamReader(file);

Then, read in each line and do your string processing (adding commas and brackets):

while(reader.EndOfFile)
{
   string currentLine = reader.ReadLine();
   // do your string processing here and save the result somewhere
}

Lastly, wrap the FileStream in a StreamWriter and write your modified strings back to the file:

StreamWriter writer = new StreamWriter(file);

// Write your content here
writer.Write("my content");

Don't forget to close your streams after working with them.

reader.Close();
writer.Close();
file.Close();
jb.

edit to add how to modify sLine. (not tested, but I'm pretty sure it'll work just fine)

    StreamReader sr = new StreamReader("path/to/file.txt");
    StreamWriter sw = new StreamWriter("path/to/outfile.txt");
    string sLine = sr.ReadLine();
    for (; sLine != null; sLine = sr.ReadLine() )
    {
        sLine = "{" + sLine.Replace(" ", ", ") + "}";
        sw.WriteLine(sLine);
    }
  1. Load the whole file
  2. use string.split('\n') to divide the contents into lines
  3. use string.replace(' ',',') to insert commas.
  4. Save the file.

Or, as waqasahmed said, just do it one at a line.

See also: http://www.csharphelp.com/archives/archive24.html

Also, this sounds suspiciously like a homework problem. Maybe we should have a "homework" tag?

In the end I used a second file rather than editing the first:

TextReader reader = new StreamReader("triangle.txt");
TextWriter writer = new StreamWriter("triangle2.txt");
for (; ; )
{
    string s = reader.ReadLine();
    if (s == null)
       break;
    s = s.Replace(" ", ", ");
    s = "{" + s + "},";
    writer.WriteLine(s);
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!