Какой наименее инвазивный способ чтения заблокированного файла в C # (возможно, в небезопасном режиме)?

\ Q и \ E и java.util.Pattern.quote() - один и тот же подход.

Однако этот подход работает только для подмножества ароматов регулярных выражений.

Проверьте следующую ссылку и вы увидите, что 4 из 15 ароматов поддерживают его. Поэтому вам лучше использовать подход Гродригеса, если вам нужно выполнить свое регулярное выражение в чем-либо, кроме Java, например javascript (который использует ECMA).

http: //www.regular-expressions .info / refflavors.html

Вот один лайнер, который может работать.

"text to escape".replaceAll("([\\\\\\[\\]\\.\\^\\+])","\\\\$1");

37
задан Tunaki 27 August 2015 в 18:06
поделиться

2 ответа

Вы можете сделать это, не копируя файл, см. эту статью:

Уловка заключается в использовании FileShare .ReadWrite (из статьи):

private void LoadFile()
{
    try
    {
        using(FileStream fileStream = new FileStream(
            "logs/myapp.log",
            FileMode.Open,
            FileAccess.Read,
            FileShare.ReadWrite))
        {
            using(StreamReader streamReader = new StreamReader(fileStream))
            {
                this.textBoxLogs.Text = streamReader.ReadToEnd();
            }
        }
    }
    catch(Exception ex)
    {
        MessageBox.Show("Error loading log file: " + ex.Message);
    }
} 
47
ответ дан 27 November 2019 в 03:40
поделиться

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

Или, может быть, StreamReader в FileStream в зависимости от того, как SQL открыл файл?

new FileStream("c:\myfile.ext", FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
1
ответ дан 27 November 2019 в 03:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: