I'm accessing files in LocalFolder with structure:
1,Name1,SomeOtherProperty1
2,Name2,SomeOtherProperty2
using Streams to write and read specyfic lines:
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();
}
}
But as far as I know there is no option to edit or delete only n line. Do you have any sugestions?
This one is dirty, but works for small files.
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);
}
}
}