// Copyright (c) 2014, 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:io";

import "package:analyzer/src/generated/java_io.dart";

class FileUtilities2 {
  static JavaFile createFile(String path) {
    return JavaFile(path).getAbsoluteFile();
  }
}

class OSUtilities {
  static String LINE_SEPARATOR = isWindows() ? '\r\n' : '\n';
  static bool isMac() => Platform.operatingSystem == 'macos';
  static bool isWindows() => Platform.operatingSystem == 'windows';
}
