我是C#的新手我需要帮助才能阅读目前有7行文字的文件,但我需要在7行之后写“Line PlaceHolder”,直到它到达文本文件中的第100行。这是我到目前为止,我知道这是我失败的尝试:编辑:这是好的,但唯一的问题是一个例外是抛出一个进程已经在使用文本文件,我如何解决这个问题来读取/写入该文件同一时间??
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);
}
}
答案 0 :(得分:0)
您似乎错过了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);
}
}
答案 1 :(得分:0)
您可以先使用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);
}
答案 2 :(得分:0)
如果您不介意将文件作为读/写
打开,这可能会有效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();
}