【发布时间】:2017-06-29 00:42:53
【问题描述】:
我最近遇到了一个我无法找到适合我需要的解决方案的问题。所以我试图逐行读取文本文件并检查该行是否为特定字符串。如果文件不包含该字符串,则应将其写入文件。这是我目前的做法。
int i = 0;
using (var sw = new StreamWriter(this.filePath))
{
foreach (SimplePlaylist playlist in myPlaylists)
{
this.PlaylistTracks[i] = new List<PlaylistTrack>();
this.PlaylistTracks[i] = GetPlaylistTracks(playlist.Owner.Id, playlist.Id);
foreach (PlaylistTrack tr in this.PlaylistTracks[i])
{
string write = tr.Track.Name + " // " + string.Join(",", tr.Track.Artists.Select(source => source.Name)) + " // " + tr.Track.Album.Id;
string line = "";
bool found = false;
using (var sr = new StreamReader(this.filePath))
{
while ((line = sr.ReadLine()) != null)
{
if (line.Equals(write))
{
found = true;
break;
}
}
sr.Close();
}
if (!found)
{
sw.WriteLine(write);
}
}
i++;
}
sw.Close();
}
我已经阅读了同时读取和写入文件的问题,但我想知道是否有办法实现这一点。任何帮助表示赞赏!
【问题讨论】:
-
先完成所有的阅读,创建一个你需要添加的行列表。然后把这些行写出来。阅读和写作必须一起完成有什么原因吗?
-
gunnerone,如果文件内容很大,这不是一个好方法。我想这首先是流媒体的目的。
标签: c# streamreader streamwriter