Код: Выделить всё
using (StreamReader reader = new StreamReader(saveLocation, System.Text.Encoding.UTF8))
{
string line;
while ((line = reader.ReadLine()) != null)
{
...
}
}
Мой файл записывается так:
Код: Выделить всё
private static void WriteIndexFile(
string saveLocation,
SortedDictionary filesToWrite)
{
using (StreamWriter writer = new StreamWriter(saveLocation, false, System.Text.Encoding.UTF8))
{
writer.WriteLine("cross_ref");
foreach (KeyValuePair kvp in filesToWrite)
{
writer.WriteLine($" file_start \"{kvp.Key}\"");
writer.WriteLine($" filename \"{kvp.Value}\"");
writer.WriteLine($" #modified {File.GetLastWriteTime(kvp.Value).ToString()}");
writer.WriteLine($" file_end");
}
writer.WriteLine("end_cross_ref");
}
}
ИЗМЕНИТЬ
Похоже, я не совсем понял, что мне на самом деле нужно. Проблема в том, что, поскольку escape-символы появляются в строках, когда я читаю файл, он сохраняется в переменной с escape-символами. Когда я затем сравниваю эту переменную, которая должна представлять собой полный путь к файлу, с файлами, которые я получаю из Directory.GetFiles(), они не равны друг другу, хотя и должны.
Например, «C:data\local\files\file_name.txt» из Directory.GetFiles() сравнивается с «\"C:data\local\files\file_name.txt \"" и строки не равны. Если бы escape-символы не присутствовали в последнем, они бы присутствовали.
Как я могу обновить свой код, чтобы он не включал escape-символы?
Подробнее здесь: https://stackoverflow.com/questions/788 ... for-a-line