OriginalGriff
Цитата:
ничего не печатая в выходном файле.
Ну...это не так.
И это потому, что вы не говорите ему об этом.
Вы открываете выходной поток:
using (StreamWriter outputFile = new StreamWriter(path2))
label2.Text = "File is converted ";
Но вы ничего в него не вписываете.
Даже если вы это сделали, выходной поток открывается внутри вашего цикла - поэтому каждый раз, когда вы открываете его, вы выбрасываете любое предыдущее содержимое.
Откройте выходной поток вне цикла и запишите его внутри цикла или запишите всю неактивную коллекцию, содержащую строки, которые вам нужно записать после завершения цикла.
И кстати: это не дает вам того, чего вы хотели:
string path2 = path + "@\newoverride.txt";
Это дает вам строку, которая начинается с atsign и новой строки... Вероятно, вы имели это в виду:
string path2 = path + @"\newoverride.txt";
Но даже в этом случае есть вероятность, что он потерпит неудачу - запись в корневую папку вашего загрузочного диска ограничена и, скорее всего, потерпит неудачу.
L48
Да, именно так, генерируется ошибка:доступ к пути 'C:\Users\xxxxx\Documents-это отрицается.
Не могли бы вы записать фиксированный код, пожалуйста?
Я перепробовал много способов :/
OriginalGriff
Нет - потому что нет никакого "фиксированного кода", чтобы вылечить нарушение доступа.
То, что ошибка - совершенно ясно - говорит: "У вас нет полномочий для доступа к этой папке". Код не может вылечить это, вам нужно выбрать папку, к которой у вас *есть* доступ!
Вы можете посмотреть здесь:
https://www.codeproject.com/Tips/370232/Where-should-I-store-my-data
Это может помочь.
L48
Я понял, большое вам спасибо.
ps: можете ли вы взглянуть на эту другую ошибку (использование List<t> требует аргумента 1 типа), что я должен добавить/изменить?
строка path = Environment.GetFolderPath(Environment.Специальная папка.Мои документы);
строка path2 = path + @"\newoverride.txt";
строка s;
Файл StreamReader = новый StreamReader(путь);
Список<строка>, который не активен = новый список<строка&ГТ;();
в то время как (файл.EndOfStream != true)
{
s = файл.Линия чтения();
Совпадение m = регулярное выражение.Совпадение(s, "(?<=неактивно)(.)+");
если (m.успех)
{
Неактивный.Добавить(м. Метод toString());
}
}
foreach (список l в неактивном состоянии)
{
используя (писатель модулю записи StreamWriter = новая модулю записи StreamWriter(путь2))
{
писатель.WriteLine(l);
}
}
OriginalGriff
Технически это другой вопрос, поэтому он должен быть опубликован под новым постом QA.
Но... это же совершенно очевидно!
foreach (список l в неактивном состоянии)
Inactive объявляется как список строк, и foreach обрабатывает каждый объект в коллекции. Поэтому вам нужно указать тип переменной teh "каждый элемент" в foreach, а не тип коллекции teh - он уже знает это. Inactive - это коллекция, и она содержит строки, поэтому вам нужно объявить l как тип элемента = строка:
foreach (строка l в неактивном состоянии)
В этом есть смысл?