Очистить файл от пустых строк с помощью c#

nomarketing

Client
Регистрация
01.11.2013
Сообщения
911
Благодарностей
178
Баллы
43
В переменное есть путь к файлу,
Нужно очистить его от пустых строк,
Есть какой то минимальный метод на C# ?
 

Radzhab

Client
Регистрация
23.05.2014
Сообщения
1 500
Благодарностей
1 268
Баллы
113
var text = project.Variables["ДанныеСпустойСтрокой"].Value; // Сперва читаем данные из файла и пишет в переменную "ДанныеСпустойСтрокой"
var rez = text.Trim();
return rez;
 
  • Спасибо
Реакции: nomarketing

nomarketing

Client
Регистрация
01.11.2013
Сообщения
911
Благодарностей
178
Баллы
43
var text = project.Variables["ДанныеСпустойСтрокой"].Value; // Сперва читаем данные из файла и пишет в переменную "ДанныеСпустойСтрокой"
var rez = text.Trim();
return rez;
Неее..данный с пустой строкой уже в файле.
К примеру есть выполнить экшен, Удалить строку (при этом список привязан)
То при удалении остаются пустые строки.
Мне нужно прочитать файл - удалить пустые строки и сохранить.
 

Irbis

Client
Регистрация
02.03.2014
Сообщения
195
Благодарностей
120
Баллы
43
Код:
 string path = project.Variables["ДанныеСпустойСтрокой"].Value;
            if (File.Exists(path))
            {
                string[] file = File.ReadAllLines(path);
                List<string> list = new List<string>(file);
                list.RemoveAll(x => x == string.Empty);
                File.WriteAllLines(path, list);
                return "ok";
            }
            else
            {
                return "Файл не найден";
            }
 

Irbis

Client
Регистрация
02.03.2014
Сообщения
195
Благодарностей
120
Баллы
43
Нужно ещё добавить директиву "using"
Код:
System.IO
 

nomarketing

Client
Регистрация
01.11.2013
Сообщения
911
Благодарностей
178
Баллы
43
Код:
 string path = project.Variables["ДанныеСпустойСтрокой"].Value;
            if (File.Exists(path))
            {
                string[] file = File.ReadAllLines(path);
                List<string> list = new List<string>(file);
                list.RemoveAll(x => x == string.Empty);
                File.WriteAllLines(path, list);
                return "ok";
            }
            else
            {
                return "Файл не найден";
            }
Ниче не понял.
Мне нужно взять файл, прочитать, удалить пустые строки, сохранить. (Все это на C#)

А принципе этот экшен работает

Код:
var text = project.Variables["ДанныеСпустойСтрокой"].Value; // Сперва читаем данные из файла и пишет в переменную "ДанныеСпустойСтрокой"
var rez = text.Trim();
return rez;
1.Взять строку
2.СиОбработчик
3.Сохранить в файл.

Но как сделать все 3 действие одним экшеном ?
 

Irbis

Client
Регистрация
02.03.2014
Сообщения
195
Благодарностей
120
Баллы
43
Добавляем директиву "using"
Код:
System.IO
Выполняем код C#:
Код:
// Получаем путь к файлу.
// В project.Variables["ИмяПеременной"].Value должен находится полный путь к файлу.
// Например: "C:\\Folder\\file.txt".
string path = project.Variables["ИмяПеременной"].Value;
// Проверяем существует файл или нет. Если нет возвращаем строку "Файл не найден".
           if (File.Exists(path))
            {
// Читаем файл с жесткого диска.
               string[] file = File.ReadAllLines(path);
                List<string> list = new List<string>(file);
// Удаляем пустые строки.
               list.RemoveAll(x => x == string.Empty);
// Перезаписываем файл.
               File.WriteAllLines(path, list);
// Возвращаем строку "ok".
                return "ok";
            }
            else
            {
                return "Файл не найден";
            }
 
  • Спасибо
Реакции: SHILY

lokiys

Moderator
Регистрация
01.02.2012
Сообщения
4 812
Благодарностей
1 187
Баллы
113
C#:
// Delete blank lines from file
string path = project.Variables["filePath"].Value; // Gets file path from your project variable with name "filePath"
var lines = System.IO.File.ReadAllLines(path).Where(arg => !string.IsNullOrWhiteSpace(arg));
System.IO.File.WriteAllLines(path, lines);
return 0;
 

Tuw

Client
Регистрация
07.09.2014
Сообщения
441
Благодарностей
150
Баллы
43
Подскажите пожалуйста, что у меня не так? Вроде все подставил, а не обрабатывает и не работает https://www.sendspace.com/file/897wmb
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
Инди вам написал хороший вариант
 

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
791
Баллы
113
Я решил проверить код lokiys. Показалось, что там ошибка, написал пост, но потом решил его удалить, потому коде в нет ошибки.
 
Последнее редактирование:

Tuw

Client
Регистрация
07.09.2014
Сообщения
441
Благодарностей
150
Баллы
43

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
А что ваш шаб должен делать? Бы получаете количество строк в списке и потом зачем-то делаете trim этого числа.
 

nomarketing

Client
Регистрация
01.11.2013
Сообщения
911
Благодарностей
178
Баллы
43
C#:
// Delete blank lines from file
string path = project.Variables["filePath"].Value; // Gets file path from your project variable with name "filePath"
var lines = System.IO.File.ReadAllLines(path).Where(arg => !string.IsNullOrWhiteSpace(arg));
System.IO.File.WriteAllLines(path, lines);
return 0;
Не работает !
Пишет ошибку проэкта. и не начинает его выполнять.
Добавил в панель Директиву Using

using System.IO;

ну и запускаю и ничего не запускается, писал даже где пач , не имя переменной с патчем а сам путь.. не знаю прикрепите рабочий пример, так как и во второ проэкте у меня тоже самое не знаю. почему
но перестает работать привязка.
 

LmPopo

Client
Регистрация
06.12.2012
Сообщения
299
Благодарностей
136
Баллы
43

Вложения

  • Спасибо
Реакции: nomarketing

lokiys

Moderator
Регистрация
01.02.2012
Сообщения
4 812
Благодарностей
1 187
Баллы
113
Не работает !
Пишет ошибку проэкта. и не начинает его выполнять.
Добавил в панель Директиву Using

using System.IO;

ну и запускаю и ничего не запускается, писал даже где пач , не имя переменной с патчем а сам путь.. не знаю прикрепите рабочий пример, так как и во второ проэкте у меня тоже самое не знаю. почему
но перестает работать привязка.

Vsjo rabotajek kak nado.
 

Вложения

  • 12,1 КБ Просмотры: 74
  • Спасибо
Реакции: BraG.A и nomarketing

nomarketing

Client
Регистрация
01.11.2013
Сообщения
911
Благодарностей
178
Баллы
43
Cg
Спасибо.
Так работает хорошо.
А вот примерчик с патчем есть типа C:\folder\111.txt
Ибо если я вставляю туда пач нивкакую не хочет запускатся... вот не знаю в чем дело - прикрепите пожалуйсто рабочий пример с патчем.

Писал с двумя слешами и с одним, с собачкой и без

Код:
// Delete blank lines from file
string path = project.Directory + @"c:\test\test.txt"; // Gets file path from your project variable with name "filePath"
var lines = System.IO.File.ReadAllLines(path).Where(arg => !string.IsNullOrWhiteSpace(arg));
System.IO.File.WriteAllLines(path, lines);
return 0;
 

lokiys

Moderator
Регистрация
01.02.2012
Сообщения
4 812
Благодарностей
1 187
Баллы
113
Cg

Спасибо.
Так работает хорошо.
А вот примерчик с патчем есть типа C:\folder\111.txt
Ибо если я вставляю туда пач нивкакую не хочет запускатся... вот не знаю в чем дело - прикрепите пожалуйсто рабочий пример с патчем.

Писал с двумя слешами и с одним, с собачкой и без

Код:
// Delete blank lines from file
string path = project.Directory + @"c:\test\test.txt"; // Gets file path from your project variable with name "filePath"
var lines = System.IO.File.ReadAllLines(path).Where(arg => !string.IsNullOrWhiteSpace(arg));
System.IO.File.WriteAllLines(path, lines);
return 0;

Nu njet tak nomozna.
Smotri

string path = project.Directory + @"c:\test\test.txt";

project.Directory - eto uze test caskj pacha to yest u tibje tjiper vot that etot smotritsa

string path = c:\test + @"c:\test\test.txt";

I togo ti hocheh dakj vot takuju path "c:\testc:\test\test.txt" :-)
 
  • Спасибо
Реакции: nomarketing

nomarketing

Client
Регистрация
01.11.2013
Сообщения
911
Благодарностей
178
Баллы
43
Nu njet tak nomozna.
Smotri

string path = project.Directory + @"c:\test\test.txt";

project.Directory - eto uze test caskj pacha to yest u tibje tjiper vot that etot smotritsa

string path = c:\test + @"c:\test\test.txt";

I togo ti hocheh dakj vot takuju path "c:\testc:\test\test.txt" :-)
Спасибо первый пример работает !
 

Tuw

Client
Регистрация
07.09.2014
Сообщения
441
Благодарностей
150
Баллы
43

nomarketing

Client
Регистрация
01.11.2013
Сообщения
911
Благодарностей
178
Баллы
43
Еще один вопрос, прочитать список сохранить его ? c#
Нашел на форуме

Код:
// получаем список, в котором будем искать
var sourceList = project.Lists["SourceList"];
Что то в рузультате не то...


ZennoLab.TemplateManipulator.V4.ComponentBlocks.ListV4
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
Спасибо! Все работает и удаляет строки, только вот оставляет одну строчку пустую в конце( Повторным запуском экшена не удаляет ее
ее может там и не быть. посчитайте в PM количество строк в списке, сверьте.
было такое, смущало, а на деле не было этой строки
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113

nomarketing

Client
Регистрация
01.11.2013
Сообщения
911
Благодарностей
178
Баллы
43

nomarketing

Client
Регистрация
01.11.2013
Сообщения
911
Благодарностей
178
Баллы
43
Ага понял, там нельзя вывести весть список в ретурн..
Ну посчитать можно, если можно значить список работает.
Как его сохранить ? или нельзя с помощью си прочитать список и сохранить его в файл ?
 

nomarketing

Client
Регистрация
01.11.2013
Сообщения
911
Благодарностей
178
Баллы
43
Вообщем всем спасибо, открыл пару мануалов по си шарпу вроде разобираюсь по немногу :-)
 

LmPopo

Client
Регистрация
06.12.2012
Сообщения
299
Благодарностей
136
Баллы
43
Спасибо! Все работает и удаляет строки, только вот оставляет одну строчку пустую в конце( Повторным запуском экшена не удаляет ее
Тоже озаботился записью в конец пустой строки, пробую изменённый код от lokiys, работает норм, теперь думаю нет ли тут ошибки, которая приведёт к порче файла.
Можно так?
Код:
// Delete blank lines from file
string path = project.Variables["filePath"].Value; // Gets file path from your project variable with name "filePath"
var lines = System.IO.File.ReadAllLines(path).Where(arg => !string.IsNullOrWhiteSpace(arg));
//System.IO.File.WriteAllLines(path, lines); оригинал
System.IO.File.WriteAllText(path, string.Join(Environment.NewLine, lines)); //мой вариант
return 0;
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
А чем код локи неверен?
 

LmPopo

Client
Регистрация
06.12.2012
Сообщения
299
Благодарностей
136
Баллы
43
Верен, но не устраивает запись пустой строки в конец, т.к. избавляемся же от них.
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113

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