Задача: Создать файл, записать строку.

Gor

Client
Регистрация
30.09.2016
Сообщения
248
Благодарностей
30
Баллы
28
Решение:
Код:
string emailsErrorFileName = "errorTest";
string Path = project.Variables["emailsErrorFolderPath"].Value + @"\" + emailsErrorFileName + ".txt";
  
File.Create(Path);
Thread.Sleep(5000);
project.Lists["emailsError"].Bind(Path);
Thread.Sleep(5000);

project.Lists["emailsError"].Add("asdfsadf");
Настройки списка: http://prntscr.com/m4zpx1
Трабла: Файл создается, но строка не записывается.
Вопрос: Что за нах..?
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 614
Благодарностей
4 602
Баллы
113
а в списке есть галка привязки к файлу?
 
  • Спасибо
Реакции: Gor

Gor

Client
Регистрация
30.09.2016
Сообщения
248
Благодарностей
30
Баллы
28

doc

Client
Регистрация
30.03.2012
Сообщения
8 614
Благодарностей
4 602
Баллы
113
попробуй без стоки
File.Create(Path);
 
  • Спасибо
Реакции: Gor

Gor

Client
Регистрация
30.09.2016
Сообщения
248
Благодарностей
30
Баллы
28
попробуй без стоки
File.Create(Path);
ТАк:
Код:
File.Create(@"C:\error.txt");
Thread.Sleep(5000);
project.Lists["emailsError"].Bind(@"C:\error.txt");
Thread.Sleep(5000);

project.Lists["emailsError"].Add("asdfsadf");
Или так?..
Код:
string Path = @"C:\error.txt";

File.Create(Path);
Thread.Sleep(5000);
project.Lists["emailsError"].Bind(Path);
Thread.Sleep(5000);

project.Lists["emailsError"].Add("asdfsadf");
В обоих случаях файл создается, в список в зенке добавляется строка, а реально в файле нет. Значит не биндится выходит.
 

Gor

Client
Регистрация
30.09.2016
Сообщения
248
Благодарностей
30
Баллы
28

doc

Client
Регистрация
30.03.2012
Сообщения
8 614
Благодарностей
4 602
Баллы
113
  • Спасибо
Реакции: Gor

Gor

Client
Регистрация
30.09.2016
Сообщения
248
Благодарностей
30
Баллы
28

doc

Client
Регистрация
30.03.2012
Сообщения
8 614
Благодарностей
4 602
Баллы
113
  • Спасибо
Реакции: Gor

Gor

Client
Регистрация
30.09.2016
Сообщения
248
Благодарностей
30
Баллы
28
убрал.
Код:
string Path = @"C:\error.txt";

project.Lists["emailsError"].Bind(Path);
Thread.Sleep(5000);
project.Lists["emailsError"].Add("asdfsadf");
Да, вижу, строка записалась.
Т.е. мы имеем отдельный код, который создает файл:
Код:
string Path = @"C:\error.txt";
File.Create(Path);
и отдельный код, который биндит список к файлу и записывает строку:
Код:
string Path = @"C:\error.txt";
project.Lists["emailsError"].Bind(Path);
Thread.Sleep(5000);
project.Lists["emailsError"].Add("asdfsadf");
Так почему они не работают вместе?
 

Gor

Client
Регистрация
30.09.2016
Сообщения
248
Благодарностей
30
Баллы
28
Работает только тогда, когда этот код разбить на два экшена, а между ними поставить паузу. Выходит код из 5 строк надо разбить на ТРИ экшена!
Снипет 1:
Код:
string Path = @"C:\error.txt";
File.Create(Path);
ЭКШЕН ПАУЗЫ 2 СЕК.
Снипет 2:
Код:
string Path = @"C:\error.txt";
project.Lists["emailsError"].Bind(Path);
project.Lists["emailsError"].Add("asdfsadf");
Правильно? Или есть нормальное какое-то решение?
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 614
Благодарностей
4 602
Баллы
113
ты походу реально меня троллишь
 
  • Спасибо
Реакции: Gor

Gor

Client
Регистрация
30.09.2016
Сообщения
248
Благодарностей
30
Баллы
28
Нашел нормальное решение. Аллилуйа!
Код:
string Path = @"C:\error.txt";
if (!File.Exists(Path))
{
    using (StreamWriter sw = File.CreateText(Path))
    {
        sw.WriteLine("Hello");
    }
}
В предыдущих решениях, вероятно, могло быть нечто подобное:
"Выполнение действия CSharp OwnCode Процесс не может получить доступ к файлу "C:\error.txt", так как этот файл используется другим процессом."
Но это сообщение не выводилось в лог.
 

Gor

Client
Регистрация
30.09.2016
Сообщения
248
Благодарностей
30
Баллы
28

doc

Client
Регистрация
30.03.2012
Сообщения
8 614
Благодарностей
4 602
Баллы
113
  • Спасибо
Реакции: Gor

Gor

Client
Регистрация
30.09.2016
Сообщения
248
Благодарностей
30
Баллы
28
Хрень... получилось как ты сказал... :bm: Только я пробовал раньше при уже созданном файле. У меня, ессно, строчка вписалась. Как-то не подумал, файл создается если его нет при привязке и записи файла. (facepalm)
Спасибо!
 

Gor

Client
Регистрация
30.09.2016
Сообщения
248
Благодарностей
30
Баллы
28
Итого, решение в конечно виде:
Код:
string Path = @"C:\error.txt";
project.Lists["emailsError"].Bind(Path);
project.Lists["emailsError"].Add("asdfsadf");
 

Gor

Client
Регистрация
30.09.2016
Сообщения
248
Благодарностей
30
Баллы
28
Так а в чем дело-то было не могу понять? Почему нельзя сначала создать файл, а потом привязать список к нему и записать строку?
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 614
Благодарностей
4 602
Баллы
113
Так а в чем дело-то было не могу понять? Почему нельзя сначала создать файл, а потом привязать список к нему и записать строку?
вероятно
"Выполнение действия CSharp OwnCode Процесс не может получить доступ к файлу "C:\error.txt", так как этот файл используется другим процессом."
 

Gor

Client
Регистрация
30.09.2016
Сообщения
248
Благодарностей
30
Баллы
28
Как я сказал, такой надписи не было. Снипет выполнялся успешно, лог на меня не ругался.
Но если этот файл действительно использовался больше чем 1 процессом, то как завершить использование файла 1 процессом и начать использовать файл другим?
Мы выполняем действие над файлом с помощью метода File.Create, а потом биндим к нему список. Предположительно в процессе биндинга что-то идет не так.
Значит предполагается, что после создания ожидается запись или еще что-то, значит нужно завершить каким-то образом использование? Как?
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 614
Благодарностей
4 602
Баллы
113
Как я сказал, такой надписи не было. Снипет выполнялся успешно, лог на меня не ругался.
Но если этот файл действительно использовался больше чем 1 процессом, то как завершить использование файла 1 процессом и начать использовать файл другим?
Мы выполняем действие над файлом с помощью метода File.Create, а потом биндим к нему список. Предположительно в процессе биндинга что-то идет не так.
Значит предполагается, что после создания ожидается запись или еще что-то, значит нужно завершить каким-то образом использование? Как?
ты не поверишь
https://www.google.com/search?client=firefox-b-ab&q=file.create+c#+освободить
 

Gor

Client
Регистрация
30.09.2016
Сообщения
248
Благодарностей
30
Баллы
28
Да лааадно!! Шо серьезно??? И так можно было??
Код:
string Path = @"C:\error.txt";
FileStream fs = File.Create(Path);
fs.Close();
project.Lists["emailsError"].Bind(Path);
project.Lists["emailsError"].Add("asdfsadf");
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 614
Благодарностей
4 602
Баллы
113
Да лааадно!! Шо серьезно??? И так можно было??
Код:
string Path = @"C:\error.txt";
FileStream fs = File.Create(Path);
fs.Close();
project.Lists["emailsError"].Bind(Path);
project.Lists["emailsError"].Add("asdfsadf");
если тебе нужен просто файл с текстом не как список, хватило бы и этого

Код:
string Path = @"C:\error.txt";
File.WriteAllText(Path, "textext");
 
  • Спасибо
Реакции: Gor

Gor

Client
Регистрация
30.09.2016
Сообщения
248
Благодарностей
30
Баллы
28
да, можно было создать сначала файл, записать какой-то текст, а на следующих итерациях биндится к нему списком.
Ну фсё! Я теперь как Джанго освобожденный! Аж крылья прорезаются ))) Знаю как в файлы инфа сохраняется! )))))))
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 386
Благодарностей
3 308
Баллы
113

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)