/******************************************************************************* * Copyright 2011 See AUTHORS file. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. ******************************************************************************/ package com.badlogic.gdx; import com.badlogic.gdx.files.FileHandle; import com.badlogic.gdx.utils.GdxRuntimeException; /** * Provides standard access to the filesystem, classpath, Android SD card, and Android assets directory. * * @author mzechner * @author Nathan Sweet */ public interface Files { /** * Indicates how to resolve a path to a file. * * @author mzechner * @author Nathan Sweet */ public enum FileType { /** * Path relative to the root of the classpath. Classpath files are always readonly. Note that classpath files * are not compatible with some functionality on Android, such as {@link Audio#newSound(FileHandle)} and * {@link Audio#newMusic(FileHandle)}. */ Classpath, /** * Path relative to the asset directory on Android and to the application's root directory on the desktop. On * the desktop, if the file is not found, then the classpath is checked. This enables files to be found when * using JWS or applets. Internal files are always readonly. */ Internal, /** * Path relative to the root of the SD card on Android and to the home directory of the current user on the * desktop. */ External, /** * Path that is a fully qualified, absolute filesystem path. To ensure portability across platforms use absolute * files only when absolutely (heh) necessary. */ Absolute, /** * Path relative to the private files directory on Android and to the application's root directory on the * desktop. */ Local; } /** * Returns a handle representing a file or directory. * * @param type * Determines how the path is resolved. * @throws GdxRuntimeException * if the type is classpath or internal and the file does not exist. * @see FileType */ public FileHandle getFileHandle(String path, FileType type); /** Convenience method that returns a {@link FileType#Classpath} file handle. */ public FileHandle classpath(String path); /** Convenience method that returns a {@link FileType#Internal} file handle. */ public FileHandle internal(String path); /** Convenience method that returns a {@link FileType#External} file handle. */ public FileHandle external(String path); /** Convenience method that returns a {@link FileType#Absolute} file handle. */ public FileHandle absolute(String path); /** Convenience method that returns a {@link FileType#Local} file handle. */ public FileHandle local(String path); /** * Returns the external storage path directory. This is the SD card on Android and the home directory of the current * user on the desktop. */ public String getExternalStoragePath(); /** * Returns true if the external storage is ready for file IO. Eg, on Android, the SD card is not available when * mounted for use with a PC. */ public boolean isExternalStorageAvailable(); /** * Returns the local storage path directory. This is the private files directory on Android and the directory of the * jar on the desktop. */ public String getLocalStoragePath(); /** Returns true if the local storage is ready for file IO. */ public boolean isLocalStorageAvailable(); }