blob: f318103c394072661f6c7e833a5319ac12eca664 [file] [log] [blame]
// Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import 'dart:async';
import 'dart:io';
const _readDelay = Duration(milliseconds: 100);
const _maxWait = Duration(seconds: 5);
/// Returns true if the file exists.
///
/// If the file does not exist it keeps retrying for a period of time.
/// Returns false if the file never becomes available.
///
/// This reduces the likelihood of race conditions.
Future<bool> waitForFile(File file) async {
final end = DateTime.now().add(_maxWait);
while (!DateTime.now().isAfter(end)) {
if (file.existsSync()) return true;
await Future.delayed(_readDelay);
}
return file.existsSync();
}