Как открыть файл для неисключительного доступа для записи с помощью.NET

@ rafsanahmad007 ответ хороший, но если вам действительно нужно использовать onResume(), есть несколько способов приблизиться к нему.

Один из вариантов - установить флаг boolean внутри onActivityResult(), а затем проверить его в onResume():

private boolean returningFromResult = false;

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == FOO) {
        this.returningFromResult = true;
        // ...
    }
}

@Override
protected void onResume() {
    super.onResume();

    if (returningFromResult) {
        // special case
    } else {
        // normal case
    }
}

Другой вариант - проверить внутри onCreate(), есть ли параметр savedInstanceState нулевой. Если это ноль, это означает, что вы запускаете в первый раз. Затем вы можете объединить это с логикой в ​​onResume(), чтобы определить, был ли вызван onResume() более одного раза:

private boolean isFirstOnResume;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    this.isFirstOnResume = (savedInstanceState == null);

    // ...
}

@Override
protected void onResume() {
    super.onResume();

    if (isFirstOnResume) {
        this.isFirstOnResume = false;
        // normal case
    } else {
        // special case
    }
}

Тем не менее, если вы можете просто использовать onActivityResult() для выполнения вашей логики, это будет быть лучшим путем.

7
задан Ryan Michela 5 February 2009 в 16:10
поделиться

3 ответа

Используйте перечисление FileShare при открытии файла с помощью Файла. Открытый. А именно, используйте FileShare. ReadWrite.

7
ответ дан 6 December 2019 в 21:20
поделиться

Не возможный. Узнайте о том, как файлы читаются/пишутся в диск.

Править: Начиная со всего downvotes я предполагаю, что объясню немного больше. Больше чем для одного процесса абсолютно невозможно записать в тот же файл в то же точное время. Когда один процесс запишет, файл обычно будет недоступен другим устройствам записи, означая, что другие процессы должны были бы ожидать, пока файл больше не пишется в первым процессом.

-1
ответ дан 6 December 2019 в 21:20
поделиться

Класс FileStream имеет конструктора, который выбирает несколько вариантов включая FileShare

new FileStream(filePath, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite);
6
ответ дан 6 December 2019 в 21:20
поделиться
Другие вопросы по тегам:

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