FileIOPermission, доступ к файлам в каталоге
От: kot--  
Дата: 16.10.08 11:11
Оценка:
hi!

Коллеги, подскажите.

Пишу код, читающий файлы в каталоге. Один из этих файлов — всегда открыт на запись другой программой(это логи).
Вылетает, соответсвенно, исключение при использовании File.ReadAllLines.
Но при этом тот же FAR или любой просмоторщик его открывает на чтение.

Мне нужно его просто ПРОЧИТАТЬ. Пытаюсь поколдовать перед работой с файлами с


            FileIOPermission permission = new FileIOPermission(FileIOPermissionAccess.Read, pathToData);
            permission.Assert();


и не выходит каменный цветок, все равно имею исключение. Соответственно, другие файлы уже обработать не могу.

Как тут правильно указать параметры доступа и файл прочесть?

            FileIOPermission permission = new FileIOPermission(FileIOPermissionAccess.Read, pathToData);
            permission.Assert();
            try
            {
                foreach (FileInfo f in logs)
                {
                    string[] FileContent = File.ReadAllLines(f.ToString());
                    foreach (string s in FileContent)
                    {
                        if (Regex.IsMatch(s, regesp))
                        {
                            Result.AppendLine(s);
                        }
                    }
                }
            }
---------------
c уважением, мохнато-полосатый kot--
Re: FileIOPermission, доступ к файлам в каталоге
От: stump http://stump-workshop.blogspot.com/
Дата: 16.10.08 11:27
Оценка:
Здравствуйте, kot--, Вы писали:

K>hi!


K> Коллеги, подскажите.


K> Пишу код, читающий файлы в каталоге. Один из этих файлов — всегда открыт на запись другой программой(это логи).

K> Вылетает, соответсвенно, исключение при использовании File.ReadAllLines.
K> Но при этом тот же FAR или любой просмоторщик его открывает на чтение.

K> Мне нужно его просто ПРОЧИТАТЬ. Пытаюсь поколдовать перед работой с файлами с



K>
K>            FileIOPermission permission = new FileIOPermission(FileIOPermissionAccess.Read, pathToData);
K>            permission.Assert();

K>



FileIOPermission здесь не причем. Используй File.Open (String, FileMode, FileAccess) и указывай явно соответствующий режим FileAccess
Понедельник начинается в субботу
Re[2]: FileIOPermission, доступ к файлам в каталоге
От: kot--  
Дата: 16.10.08 12:24
Оценка:
Здравствуйте, stump, Вы писали:

S>FileIOPermission здесь не причем. Используй File.Open (String, FileMode, FileAccess) и указывай явно соответствующий режим FileAccess


попробовал так, не помогло. Все равно кидает исключение, что файл открыт другим процессом


            try
            {
                foreach (FileInfo f in logs)
                {
                    using (var fs = new FileStream(f.FullName, FileMode.Open, FileAccess.Read, FileShare.Read))
                    using (var sr = new StreamReader(fs))
                    {
                        var line = sr.ReadLine();
                        while (line != null)
                        {
                            if (Regex.IsMatch(line, regesp))
                            {
                                Result.AppendLine(line);
                            }
                            line = sr.ReadLine();
                        }
                    }
                }
            }
            catch (IOException e1)
---------------
c уважением, мохнато-полосатый kot--
Re[3]: FileIOPermission, доступ к файлам в каталоге
От: Pavel M. Россия  
Дата: 16.10.08 12:36
Оценка:
Здравствуйте, kot--, Вы писали:

K>Здравствуйте, stump, Вы писали:


S>>FileIOPermission здесь не причем. Используй File.Open (String, FileMode, FileAccess) и указывай явно соответствующий режим FileAccess


K> попробовал так, не помогло. Все равно кидает исключение, что файл открыт другим процессом



K>
K>            try
K>            {
K>                foreach (FileInfo f in logs)
K>                {
K>                    using (var fs = new FileStream(f.FullName, FileMode.Open, FileAccess.Read, FileShare.Read))
K>                    using (var sr = new StreamReader(fs))
K>                    {
K>                        var line = sr.ReadLine();
K>                        while (line != null)
K>                        {
K>                            if (Regex.IsMatch(line, regesp))
K>                            {
K>                                Result.AppendLine(line);
K>                            }
K>                            line = sr.ReadLine();
K>                        }
K>                    }
K>                }
K>            }
K>            catch (IOException e1)
K>


Попробуйте
FileShare.ReadWrite

PS А почему Вы везде var используете? Ужас
--------------------------
less think — do more
Re[4]: FileIOPermission, доступ к файлам в каталоге
От: kot--  
Дата: 16.10.08 13:21
Оценка: +1
Здравствуйте, Pavel M., Вы писали:


PM>Попробуйте

PM>FileShare.ReadWrite

спасибо, получилось!

PM>PS А почему Вы везде var используете? Ужас


/me краснеет

ну это, мейнстрим, решарпер советует и все такое
---------------
c уважением, мохнато-полосатый kot--
Re[5]: FileIOPermission, доступ к файлам в каталоге
От: Pavel M. Россия  
Дата: 16.10.08 13:43
Оценка: -6 :)
Здравствуйте, kot--, Вы писали:

K>Здравствуйте, Pavel M., Вы писали:



PM>>Попробуйте

PM>>FileShare.ReadWrite

K> спасибо, получилось!


просто тот процесс поставил ReadWrite, а Вы пытались изменить на Read

PM>>PS А почему Вы везде var используете? Ужас


K> /me краснеет


K> ну это, мейнстрим, решарпер советует и все такое


читабельность кода снижается, когда одни var везде торчат. Например здесь

var line = sr.ReadLine();


Читая строчку, приходится домысливать, что за тип)
--------------------------
less think — do more
Re[6]: FileIOPermission, доступ к файлам в каталоге
От: Pavel M. Россия  
Дата: 16.10.08 19:40
Оценка:
Здравствуйте, Pavel M., Вы писали:



K>> ну это, мейнстрим, решарпер советует и все такое


PM>читабельность кода снижается, когда одни var везде торчат. Например здесь


var line = sr.ReadLine();


PM>Читая строчку, приходится домысливать, что за тип)


Товарищ Несогласный, Вы можете оспорить данное утверждение?

/*var*/ string line = sr.ReadLine(); //так хуже?
--------------------------
less think — do more
Re[7]: FileIOPermission, доступ к файлам в каталоге
От: drol  
Дата: 16.10.08 20:42
Оценка: -1
Здравствуйте, Pavel M., Вы писали:

PM>>читабельность кода снижается, когда одни var везде торчат. Например здесь

var line = sr.ReadLine();

PM>>Читая строчку, приходится домысливать, что за тип)

PM>Товарищ Несогласный, Вы можете оспорить данное утверждение?


Можем. Во-первых, название метода ReadLine() вполне явно говорит о типе. Во-вторых, в нормальных условиях с кодом работают в специальной среде разработки, и в случае затруднений достаточно навести мышку на название переменной, или shortcut соответствующий нажать. Вы же не требуете в вызовах методов явно указывать типы аргументов и возвращаемого значения ? И даже названия аргументов не требуете (привет, Objective C!). А это ведь гораздо более неочевидно...

Единственное с чем можно согласиться: при рассмотрении кода вне Visual Studio некоторые проблемы действительно возможны. И может быть их даже нужно решать. Но делать это надо явно не путём приспособления языка и стиля написания исходного кода "под принтер"
Re[8]: FileIOPermission, доступ к файлам в каталоге
От: Pavel M. Россия  
Дата: 16.10.08 22:19
Оценка: +3
Здравствуйте, drol, Вы писали:

D> А это ведь гораздо более неочевидно...


Вы экономите 4 буквы, "string" -> "var", однако предлагаете дергать мышкой над методами чтобы увидеть какие типы где возвращаются? ReadLine возвращает String — это и ежу понятно, а какой-нибудь CoreParser.GetSemanticalTreeInternal? Я сомневаюсь, что Ваши программы основываются только на примитивах.

Когда в язык вводится новая конструкция для упрощений работы с другими технологиями (LINQ), это не значит, что ее нужно использовать везде, где только можно и нельзя. Любыми вещами нужно пользоваться разумно.
И еще против Ваших аргументов: мы пишем не код под среду, а используем среду для кода, а также код друг друга и принтер тут совершенно не при чем.

А почему не использую указание типа в аргументах? Потому что читая метод ее легко проследить. Аргументы из ниоткуда не возникают и вникуда не пропадают Variables declarations + method signature доходчиво все показвают, что и какого типа куда пришло и куда это можно передать. А как раз когда везде стоит var — это упомянутую мною цепочку нарушает. "Неизвестно" ,что мы из метода получили. Ах, да, мышкой подергать нужно)
--------------------------
less think — do more
Re[9]: FileIOPermission, доступ к файлам в каталоге
От: drol  
Дата: 17.10.08 00:09
Оценка: -1
Здравствуйте, Pavel M., Вы писали:

PM>Вы экономите 4 буквы, "string" -> "var",


Лично я, в данном примере, экономлю время на отсутствии необходимости точного выяснения "а что же там возвращает метод XXX() ?"
Существенная экономия и на наборе имеет место быть в других случаях, например, при возвращении значений навороченных generic-типов.

PM>однако предлагаете дергать мышкой над методами чтобы увидеть какие типы где возвращаются?


Да. Бо это совсем другая задача. И её нужно решать в любом случае.

PM>ReadLine возвращает String — это и ежу понятно,


Ну вот видите. А что тогда придирались-то к человеку ? Раз "ежу понятно" ?

PM>а какой-нибудь CoreParser.GetSemanticalTreeInternal?


Тоже примерно вполне себе понятно. Для действительно же тяжёлых случаев, как я уже говорил, предназначена IDE.

PM>И еще против Ваших аргументов: мы пишем не код под среду, а используем среду для кода, а также код друг друга и принтер тут совершенно не при чем.


Вы — может быть. А вот я пишу код с учётом возможностей IDE. Бо у меня всегда достаточно маленьких радостей, на которые можно потратить получаемый в итоге выигрыш по времени.

PM>А почему не использую указание типа в аргументах? Потому что читая метод ее легко проследить.


Неправда. Любое нетривиальное выражение в качестве аргумента, например, тот же вызов функции, и ничего Вы уже не проследите.

*А в то что Вы каждый аргумент каждого вызова функции вычисляете отдельно, и складываете в отдельную же локальную переменную с явно заданным типом, я никогда не поверю

PM>Variables declarations + method signature доходчиво все показвают,


Вот именно. Method signature. Которая, в случае вызовов методов, в нормальных условиях узнаётся через IDE, с помощью мышки/shortcut'а.

PM>А как раз когда везде стоит var — это упомянутую мною цепочку нарушает. "Неизвестно" ,что мы из метода получили. Ах, да, мышкой подергать нужно)


Именно так. Не ползать, в поисках объявлений переменных и методов, по коду FAR'ом, а в нормальной IDE просто мышку навести.
Re[10]: FileIOPermission, доступ к файлам в каталоге
От: Pavel M. Россия  
Дата: 17.10.08 10:06
Оценка:
Здравствуйте, drol, Вы писали:

D>Здравствуйте, Pavel M., Вы писали:


PM>>Вы экономите 4 буквы, "string" -> "var",


D>Лично я, в данном примере, экономлю время на отсутствии необходимости точного выяснения "а что же там возвращает метод XXX() ?"


Без знания "чего же там", Вы не сможете с этим работать по назначению

D>Существенная экономия и на наборе имеет место быть в других случаях, например, при возвращении значений навороченных generic-типов.


Ммм, IntelliSense достаточно хорошо справляется с генериками. И тут-то как раз полезно видеть ,что и куда.

D>Ну вот видите. А что тогда придирались-то к человеку ? Раз "ежу понятно" ?


Я не придрался, я не имею претензий, просто неприятно, когда шарп напоминает JavaScript.

D>Тоже примерно вполне себе понятно. Для действительно же тяжёлых случаев, как я уже говорил, предназначена IDE.


Для действительно тяжелых случаев предназначена документация. А визуальный образ позволяет избежать "примерно вполне себе понятно")))

D>Вы — может быть. А вот я пишу код с учётом возможностей IDE. Бо у меня всегда достаточно маленьких радостей, на которые можно потратить получаемый в итоге выигрыш по времени.


var вместо string и подобные радости сэкономят ровно столько времени, сколько использование StringBuilder в однократном сложении строк прибавит производительности Вашей программе. И Вы не учитываете времени на необходимость распознавания и вспоминаний, когда везде стоит var, var, var, var.... Так можно ресурс мышки истратить за месяц )

D>Неправда. Любое нетривиальное выражение в качестве аргумента, например, тот же вызов функции, и ничего Вы уже не проследите.


D>*А в то что Вы каждый аргумент каждого вызова функции вычисляете отдельно, и складываете в отдельную же локальную переменную с явно заданным типом, я никогда не поверю


Но я знаю, что на входе цепочки методов у меня хотя бы "SematicTreeInternal", а не "var" И я это вижу именно тогда, когда смотрю на эту цепочку методов, мне не приходится дергать мышкой, потом забывать, что там всплыло, потом еще раз дергать =)

D>Вот именно. Method signature. Которая, в случае вызовов методов, в нормальных условиях узнаётся через IDE, с помощью мышки/shortcut'а.


Я имел в виду сигнатуру, которую Вы видете перед глазами, когда пишете тело метода.

PM>>А как раз когда везде стоит var — это упомянутую мною цепочку нарушает. "Неизвестно" ,что мы из метода получили. Ах, да, мышкой подергать нужно)


D>Именно так. Не ползать, в поисках объявлений переменных и методов, по коду FAR'ом, а в нормальной IDE просто мышку навести.


Да, но, если пользоваться техникой, что методы большие нужно разбивать на небольшие, логически завершенные, то все как раз перед глазами. А мышкой можно подергать, если из поля зрения попал аргумент. Вобще, я работаю на клавиатуре больше, как программист , а не геймер какой-нибудь, опэтому каждый раз руку к мышке дергать — вот где отвлекает
--------------------------
less think — do more
Re[9]: FileIOPermission, доступ к файлам в каталоге
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 17.10.08 10:36
Оценка: +2 -2
Здравствуйте, Pavel M., Вы писали:

PM>Вы экономите 4 буквы, "string" -> "var", однако предлагаете дергать мышкой над методами чтобы увидеть какие типы где возвращаются? ReadLine возвращает String — это и ежу понятно, а какой-нибудь CoreParser.GetSemanticalTreeInternal?

PM> Я сомневаюсь, что Ваши программы основываются только на примитивах.

Правда состоит в том, что при чтении, а не написании, кода, знать точное имя типа просто не нужно.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[10]: FileIOPermission, доступ к файлам в каталоге
От: Константин Л.  
Дата: 17.10.08 11:08
Оценка:
Здравствуйте, drol, Вы писали:

[]

Однако все известные мне merge tool'ы никакие хинты тебе показывать не будут
Re[10]: FileIOPermission, доступ к файлам в каталоге
От: Константин Л.  
Дата: 17.10.08 11:09
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, Pavel M., Вы писали:


PM>>Вы экономите 4 буквы, "string" -> "var", однако предлагаете дергать мышкой над методами чтобы увидеть какие типы где возвращаются? ReadLine возвращает String — это и ежу понятно, а какой-нибудь CoreParser.GetSemanticalTreeInternal?

PM>> Я сомневаюсь, что Ваши программы основываются только на примитивах.

AVK>Правда состоит в том, что при чтении, а не написании, кода, знать точное имя типа просто не нужно.


Смотря какого, и смотря для чего. Основная проблема — merge tools.
Re[11]: FileIOPermission, доступ к файлам в каталоге
От: _FRED_ Черногория
Дата: 17.10.08 11:15
Оценка:
Здравствуйте, Константин Л., Вы писали:

PM>>>Вы экономите 4 буквы, "string" -> "var", однако предлагаете дергать мышкой над методами чтобы увидеть какие типы где возвращаются? ReadLine возвращает String — это и ежу понятно, а какой-нибудь CoreParser.GetSemanticalTreeInternal?

PM>>> Я сомневаюсь, что Ваши программы основываются только на примитивах.
AVK>>Правда состоит в том, что при чтении, а не написании, кода, знать точное имя типа просто не нужно.
КЛ>Смотря какого, и смотря для чего. Основная проблема — merge tools.

Ты о том, в что в "merge tools" нет интеллисенса и никто не подскажет истинный тип? Не в нём дело. Даже без интеллисенс и чтение и написание с var удобнее.
Или я не уловил суть?
Help will always be given at Hogwarts to those who ask for it.
Re[12]: FileIOPermission, доступ к файлам в каталоге
От: Константин Л.  
Дата: 17.10.08 11:17
Оценка:
Здравствуйте, _FRED_, Вы писали:

_FR>Здравствуйте, Константин Л., Вы писали:


PM>>>>Вы экономите 4 буквы, "string" -> "var", однако предлагаете дергать мышкой над методами чтобы увидеть какие типы где возвращаются? ReadLine возвращает String — это и ежу понятно, а какой-нибудь CoreParser.GetSemanticalTreeInternal?

PM>>>> Я сомневаюсь, что Ваши программы основываются только на примитивах.
AVK>>>Правда состоит в том, что при чтении, а не написании, кода, знать точное имя типа просто не нужно.
КЛ>>Смотря какого, и смотря для чего. Основная проблема — merge tools.

_FR>Ты о том, в что в "merge tools" нет интеллисенса и никто не подскажет истинный тип? Не в нём дело. Даже без интеллисенс и чтение и написание с var удобнее.


написание — безусловно, чтение — не всегда, особенно когда isence нет

_FR>Или я не уловил суть?


уловил
Re[11]: FileIOPermission, доступ к файлам в каталоге
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 17.10.08 11:33
Оценка:
Здравствуйте, Константин Л., Вы писали:

КЛ>Смотря какого, и смотря для чего. Основная проблема — merge tools.


И что с ними не так?
... << RSDN@Home 1.2.0 alpha 4 rev. 1111 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[10]: FileIOPermission, доступ к файлам в каталоге
От: Pavel M. Россия  
Дата: 17.10.08 11:34
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, Pavel M., Вы писали:


PM>> Я сомневаюсь, что Ваши программы основываются только на примитивах.


AVK>Правда состоит в том, что при чтении, а не написании, кода, знать точное имя типа просто не нужно.


Почему же? Допустим, Вам дали код на поддержку чужой или Вы недавно пришли на проект. В море var'ов можно легко утонуть или затереть мышку до дыр Мало того, что и так незнакомые типы данных, так еще и надо хинтить и запоминать что там всплывало и где.
--------------------------
less think — do more
Re[13]: FileIOPermission, доступ к файлам в каталоге
От: _FRED_ Черногория
Дата: 17.10.08 11:34
Оценка:
Здравствуйте, Константин Л., Вы писали:

_FR>>Ты о том, в что в "merge tools" нет интеллисенса и никто не подскажет истинный тип? Не в нём дело. Даже без интеллисенс и чтение и написание с var удобнее.


КЛ>написание — безусловно, чтение — не всегда, особенно когда isence нет


Ну вот просто поверь: это вопрос исключительно наличия опыта. Посмотри сам: люди с заслуживающим уважения бэкграундом пропагандируют "var"; создатели языка пропагандируют "var"; даже, надеюсь, в следующей версии мостодонта С++ появится "auto". А кто спорит? Какие их аргументы? Все сводятся к тому, что "неудобно читать".

Диагноз один: не пробовали научиться. Не пробовали. Пока человек не начнёт говорить на неизвестном емё языке, никогда не научится. Пока не начнёт сам использовать какое-то знание, не разберётся в нём. Пока не заставит себя на два-три месяца использовать "var" везде, где только позволяет компилятор, не отвыкнет от мысли, что "надо знать тип переменной".

Не надо! Базовых знаний стандартной библиотеки и Design Guidelines позволят сделать нужные предположения, где это необходимо. Брось писать, притвыкни смотреть на собственоручно написанный код с "var". Потом учись читать чужой. И всё пройдёт.
Единственно, что мешает — "кривые", ни о чём не говорящие имена переменных, но и это со временем проходит: учишся находить баланс между краткостью и достаточностью.
Help will always be given at Hogwarts to those who ask for it.
Re[12]: FileIOPermission, доступ к файлам в каталоге
От: Константин Л.  
Дата: 17.10.08 11:36
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, Константин Л., Вы писали:


КЛ>>Смотря какого, и смотря для чего. Основная проблема — merge tools.


AVK>И что с ними не так?


в низ нет isence
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.