Editing/Deleting Windows Phone 8.1 C# 文件中的行
Editing/Deleting lines in files in Windows Phone 8.1 C#
我正在访问具有以下结构的 LocalFolder 中的文件:
1,Name1,SomeOtherProperty1
2,Name2,SomeOtherProperty2
使用 Streams 写入和读取特定行:
public async void saveToFile(List<string> content, string fileName) {
using (StreamWriter writeStream = new StreamWriter(await localFolder.OpenStreamForWriteAsync(fileName, CreationCollisionOption.OpenIfExists))) {
foreach (string contentLine in content) {
await writeStream.WriteLineAsync(contentLine);
}
writeStream.Dispose();
}
}
但据我所知,没有选项只能编辑或删除 n 行。你有什么建议吗?
这个有点脏,但适用于小文件。
public async void editLineById(string fileName, string match, string content) {
List<string> file = await readAllFromFile(fileName);
int matchId = file.IndexOf(file.Where((item) => item.Contains(match)).First());
file[matchId] = content;
overrideFile(fileName, file);
}
public async Task<List<string>> readAllFromFile(string fileName) {
List<string> content = new List<string>();
using (StreamReader readStream = new StreamReader(await localFolder.OpenStreamForReadAsync(fileName))) {
while (readStream.Peek() != -1) {
content.Add(await readStream.ReadLineAsync());
}
readStream.Dispose();
}
return content;
}
public async void overrideFile(string fileName, List<string> content) {
using (StreamWriter writeStream = new StreamWriter(await localFolder.OpenStreamForWriteAsync(fileName, CreationCollisionOption.ReplaceExisting))) {
foreach(string line in content) {
await writeStream.WriteLineAsync(line);
}
}
}
我正在访问具有以下结构的 LocalFolder 中的文件:
1,Name1,SomeOtherProperty1
2,Name2,SomeOtherProperty2
使用 Streams 写入和读取特定行:
public async void saveToFile(List<string> content, string fileName) {
using (StreamWriter writeStream = new StreamWriter(await localFolder.OpenStreamForWriteAsync(fileName, CreationCollisionOption.OpenIfExists))) {
foreach (string contentLine in content) {
await writeStream.WriteLineAsync(contentLine);
}
writeStream.Dispose();
}
}
但据我所知,没有选项只能编辑或删除 n 行。你有什么建议吗?
这个有点脏,但适用于小文件。
public async void editLineById(string fileName, string match, string content) {
List<string> file = await readAllFromFile(fileName);
int matchId = file.IndexOf(file.Where((item) => item.Contains(match)).First());
file[matchId] = content;
overrideFile(fileName, file);
}
public async Task<List<string>> readAllFromFile(string fileName) {
List<string> content = new List<string>();
using (StreamReader readStream = new StreamReader(await localFolder.OpenStreamForReadAsync(fileName))) {
while (readStream.Peek() != -1) {
content.Add(await readStream.ReadLineAsync());
}
readStream.Dispose();
}
return content;
}
public async void overrideFile(string fileName, List<string> content) {
using (StreamWriter writeStream = new StreamWriter(await localFolder.OpenStreamForWriteAsync(fileName, CreationCollisionOption.ReplaceExisting))) {
foreach(string line in content) {
await writeStream.WriteLineAsync(line);
}
}
}