为每个空行创建带有字符串的行,直到到达第 100 行
create lines with strings for each blank line until it reaches line 100
我是 C# 的新手,我需要有关读取当前有 7 行文本的文件的帮助,但我需要它在这 7 行之后写入 "Line PlaceHolder",直到到达文本文件中的第 100 行。这是我到目前为止所拥有的,我知道这是我失败的尝试:编辑:这很好,但唯一的问题是抛出一个异常,一个进程已经在使用文本文件,我如何解决这个问题 read/write 该文件同时??
public void ReadFile()
{
if (File.Exists(AccountsFile))
{
using (StreamReader Reader = new StreamReader(AccountsFile))
using (StreamWriter Writer = new StreamWriter((AccountsFile)))
{
for (int i = 0; i < 100; i++)
{
string line;
if ((line = Reader.ReadLine()) == null)
{
Writer.WriteLine("Line Placeholder");
}
}
}
}
else
{
File.Create(AccountsFile);
}
}
看起来你只是缺少一个 else
:
public void ReadFile()
{
if (File.Exists(AccountsFile))
{
using (StreamReader Reader = new StreamReader(AccountsFile))
using (StreamWriter Writer = new StreamWriter((AccountsFile)))
{
for (int i = 0; i < 100; i++)
{
string line;
if ((line = Reader.ReadLine()) == null)
{
Writer.WriteLine("Line Placeholder");
}
else
Writer.WriteLine(line);
}
}
}
else
{
File.Create(AccountsFile);
}
}
您可以先使用 File.ReadAllLines
将文件内容读入数组,获取数组 .Length
(表示文件中的行数),然后从 100 中减去该数字,看看如何你需要写很多行。如果数字大于零,则创建一个包含那么多空行的 List<string>
并使用 File.AppendAllLines
:
将这些行写入文件末尾
// See how many lines we need to add
var newLinesNeeded = 100 - File.ReadAllLines(AccountsFile).Length;
// Add them if needed
if (newLinesNeeded > 0)
{
// Create a list of empty lines
var blankLines = new List<string>();
for(int i = 0; i < newLinesNeeded; i++)
{
blankLines.Add("");
}
// Append them to our file
File.AppendAllLines(AccountsFile, blankLines);
}
如果您不介意以 Read/Write
方式打开文件,这可能会起作用
using (FileStream fileStream = File.Open(AccountsFile, FileMode.OpenOrCreate, FileAccess.ReadWrite))
{
var streamWriter = new StreamWriter(fileStream);
var streamReader = new StreamReader(fileStream);
var i = 0;
// read and count the lines
while (streamReader.ReadLine() != null){
i++;
}
// if any more lines are needed write them
while (i++ < 100)
{
streamWriter.WriteLine("Line Placeholder");
}
streamWriter.Flush();
}
我是 C# 的新手,我需要有关读取当前有 7 行文本的文件的帮助,但我需要它在这 7 行之后写入 "Line PlaceHolder",直到到达文本文件中的第 100 行。这是我到目前为止所拥有的,我知道这是我失败的尝试:编辑:这很好,但唯一的问题是抛出一个异常,一个进程已经在使用文本文件,我如何解决这个问题 read/write 该文件同时??
public void ReadFile()
{
if (File.Exists(AccountsFile))
{
using (StreamReader Reader = new StreamReader(AccountsFile))
using (StreamWriter Writer = new StreamWriter((AccountsFile)))
{
for (int i = 0; i < 100; i++)
{
string line;
if ((line = Reader.ReadLine()) == null)
{
Writer.WriteLine("Line Placeholder");
}
}
}
}
else
{
File.Create(AccountsFile);
}
}
看起来你只是缺少一个 else
:
public void ReadFile()
{
if (File.Exists(AccountsFile))
{
using (StreamReader Reader = new StreamReader(AccountsFile))
using (StreamWriter Writer = new StreamWriter((AccountsFile)))
{
for (int i = 0; i < 100; i++)
{
string line;
if ((line = Reader.ReadLine()) == null)
{
Writer.WriteLine("Line Placeholder");
}
else
Writer.WriteLine(line);
}
}
}
else
{
File.Create(AccountsFile);
}
}
您可以先使用 File.ReadAllLines
将文件内容读入数组,获取数组 .Length
(表示文件中的行数),然后从 100 中减去该数字,看看如何你需要写很多行。如果数字大于零,则创建一个包含那么多空行的 List<string>
并使用 File.AppendAllLines
:
// See how many lines we need to add
var newLinesNeeded = 100 - File.ReadAllLines(AccountsFile).Length;
// Add them if needed
if (newLinesNeeded > 0)
{
// Create a list of empty lines
var blankLines = new List<string>();
for(int i = 0; i < newLinesNeeded; i++)
{
blankLines.Add("");
}
// Append them to our file
File.AppendAllLines(AccountsFile, blankLines);
}
如果您不介意以 Read/Write
方式打开文件,这可能会起作用using (FileStream fileStream = File.Open(AccountsFile, FileMode.OpenOrCreate, FileAccess.ReadWrite))
{
var streamWriter = new StreamWriter(fileStream);
var streamReader = new StreamReader(fileStream);
var i = 0;
// read and count the lines
while (streamReader.ReadLine() != null){
i++;
}
// if any more lines are needed write them
while (i++ < 100)
{
streamWriter.WriteLine("Line Placeholder");
}
streamWriter.Flush();
}