/* * SIP Communicator, the OpenSource Java VoIP and Instant Messaging client. * * Distributable under LGPL license. * See terms of license at gnu.org. */ package net.java.sip.communicator.service.fileaccess; import java.io.File; import java.io.IOException; /** * A service used to provide the basic functionality required to access the * undelying file system. * * Note: Never store unencrypted sensitive information, such as passwords, * personal data, credit card numbers, etc.. * * @author Alexander Pelov */ public interface FileAccessService { /** * The key of the system property containing the user home dir */ public static final String SYSPROPERTYKEY_USER_HOME = "user.home"; /** * The key of the configuration property containing the user home dir - if * it is not defined the system property is used */ public static final String CONFPROPERTYKEY_USER_HOME = "net.java.sip.communicator.user.home"; /** * The subdirectory of USER_HOME in which all user files will be stored */ public static final String CONFPROPERTYKEY_SIPCOMM_DIRECTORY = "net.java.sip.communicator.user.home.sip-communicator-home"; /** * The default subdirectory */ public static final String DEFAULT_SIPCOMM_DIRECTORY = ".sip-communicator"; /** * This method returns a created temporary file. After you close this file * it is not guaranteed that you will be able to open it again nor that it * will contain any information. * * Note: DO NOT store unencrypted sensitive information in this file * * @return The created temporary file * @throws IOException * If the file cannot be created */ File getTemporaryFile() throws IOException; /** * This method returns a created temporary directory. Any file you create in * it will be a temporary file. * * Note: If there is no opened file in this directory it may be deleted at * any time. Note: DO NOT store unencrypted sensitive information in this * directory * * @return The created directory * @throws IOException * If the directory cannot be created */ File getTemporaryDirectory() throws IOException; /** * This method returns a file specific to the current user. It may not * exist, but it is guaranteed that you will have the sufficient rights to * create it. * * This file should not be considered secure because the implementor may * return a file accesible to everyone. Generaly it will reside in current * user's homedir, but it may as well reside in a shared directory. * * Note: DO NOT store unencrypted sensitive information in this file * * @param fileName * The name of the private file you wish to access * @return The file * @throws Exception * Thrown if there is no suitable location for the persistent * file */ File getPrivatePersistentFile(String fileName) throws Exception; /** * This method creates a directory specific to the current user. * * This directory should not be considered secure because the implementor * may return a directory accesible to everyone. Generaly it will reside in * current user's homedir, but it may as well reside in a shared directory. * * It is guaranteed that you will be able to create files in it. * * Note: DO NOT store unencrypted sensitive information in this file * * @param dirName * The name of the private directory you wish to access. * @return The created directory. * @throws Exception * Thrown if there is no suitable location for the persistent * directory. */ File getPrivatePersistentDirectory(String dirName) throws Exception; /** * This method creates a directory specific to the current user. * * {@link #getPrivatePersistentDirectory(String)} * * @param dirNames * The name of the private directory you wish to access. * @return The created directory. * @throws Exception * Thrown if there is no suitable location for the persistent * directory. */ File getPrivatePersistentDirectory(String[] dirNames) throws Exception; }