我正在尝试创建以下内容。
我的应用是Windows应用,表单包含以下
现在我的应用需要像以下一样工作。
当我打开我的应用程序时,它需要向我显示消息提醒abt评论和姓名谁发表评论指定日期。
为此我没有使用任何DataBase我创建的文件来存储注释和名称和日期。
所以我的问题是如何阅读文字区别名称,评论和日期。
我的代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Windows.Forms;
namespace DateUpdater.Classes
{
public class FileHandling
{
public bool WritetoFile(Classes.FileParameters Params)
{
string directoryPath = Environment.CurrentDirectory.ToString();
directoryPath = directoryPath.ToLower().Replace("\\bin\\debug", "\\Logs\\reminder.txt");
File.AppendAllText(directoryPath, Params.Comments.ToString());
File.AppendAllText(directoryPath, EndCharacter());
File.AppendAllText(directoryPath, Params.Name.ToString());
File.AppendAllText(directoryPath, EndCharacter());
File.AppendAllText(directoryPath, Params.DateToSet.ToString());
File.AppendAllText(directoryPath, EndCharacter());
return true;
}
public Classes.FileParameters ReadFromFile()
{
Classes.FileParameters Params;
string directoryPath = Environment.CurrentDirectory.ToString();
directoryPath = directoryPath.ToLower().Replace("\\bin\\debug", "\\Logs\\reminder.txt");
// string tempData= File.ReadAllText(directoryPath);
var searchTarget = "/n";
foreach (var line in File.ReadLines(directoryPath))
{
if (line.Contains(searchTarget))
{
break; // then stop
}
}
return null;
}
public string EndCharacter()
{
return "/n";
}
}
}
请给我解决方案......
答案 0 :(得分:0)
使用AppendAllText
不是最理想的,因为msdn表示每次调用它时都会打开/创建并关闭文件。在您的示例中,您将打开和关闭文件六次。 File.AppendText将是更好的选择。如果删除自定义行分隔符并使用系统默认值,则可以执行以下操作:
public bool WritetoFile(Classes.FileParameters Params)
{
string directoryPath = Environment.CurrentDirectory.ToString();
directoryPath = directoryPath.ToLower().Replace("\\bin\\debug", "\\Logs\\reminder.txt");
using(StreamWriter stream = File.AppendText(directoryPath))
{
stream.Write(Params.Comments.ToString());
stream.Write(SepCharacter);
stream.Write(directoryPath, Params.Name.ToString());
stream.Write(SepCharacter);
stream.WriteLine(directoryPath, Params.DateToSet.ToString());
}
return true;
}
public char SepCharacter { get{ return '\t'; } }
这会将您的所有内容放在文本文件中的一行中,并以制表符分隔。行分隔符是默认的\r\n
。确保使用不会出现在文本中的分隔符,否则需要在WritetoFile / ReadFromFile例程中屏蔽/取消屏蔽它们。
然后你就可以了
public Classes.FileParameters ReadFromFile()
{
Classes.FileParameters Params;
string directoryPath = Environment.CurrentDirectory.ToString();
directoryPath = directoryPath.ToLower().Replace("\\bin\\debug", "\\Logs\\reminder.txt");
var searchTarget = "searchString";
foreach (var line in File.ReadLines(directoryPath))
{
if (line.Contains(searchTarget))
{
// this will give you a string array of Comment, Name and Date
// for every line that contains "searchString"
string[] data = line.Split( new char[] { SepCharacter } );
break; // then stop
}
}
return null;
}
如果您的评论可以包含换行符或标签,则需要更多关于屏蔽/取消屏蔽这些评论的工作。但是这个问题也存在于你的初始例子中。
顺便说一下,对于任何拼写错误,我在记事本中这样做了; - )