001package co.codewizards.cloudstore.core.oio; 002 003import static java.util.Objects.*; 004 005import java.io.IOException; 006import java.net.URI; 007 008/** 009 * @author Sebastian Schefczyk 010 * 011 */ 012public class OioFileFactory { 013 014 public static final String FILE_SEPARATOR = java.io.File.separator; 015 016 public static final char FILE_SEPARATOR_CHAR = java.io.File.separatorChar; 017 018 019 /** Factory method, substitutes the constructor of {@link java.io.File}. */ 020 public static File createFile(final String pathname) { 021 return OioRegistry.getInstance().getFileFactory().createFile(pathname); 022 } 023 024 /** Factory method, substitutes the constructor of {@link java.io.File}. */ 025 public static File createFile(final String parent, final String ... children) { 026 requireNonNull(parent, "parent"); 027 028 final FileFactory fileFactory = OioRegistry.getInstance().getFileFactory(); 029 File result = null; 030 if (children != null) { 031 for (final String child : children) { 032 if (result == null) 033 result = fileFactory.createFile(parent, child); 034 else 035 result = fileFactory.createFile(result, child); 036 } 037 } 038 039 if (result == null) 040 result = createFile(parent); 041 042 return result; 043 } 044 045 /** Factory method, substitutes the constructor of {@link java.io.File}. */ 046 public static File createFile(final File parent, final String ... children) { 047 requireNonNull(parent, "parent"); 048 049 final FileFactory fileFactory = OioRegistry.getInstance().getFileFactory(); 050 File result = parent; 051 if (children != null) { 052 for (final String child : children) 053 result = fileFactory.createFile(result, child); 054 } 055 return result; 056 } 057 058 /** Factory method, substitutes the constructor of {@link java.io.File}. */ 059 public static File createFile(final java.io.File file) { 060 return OioRegistry.getInstance().getFileFactory().createFile(file); 061 } 062 063 /** Factory method, substitutes the constructor of {@link java.io.File}. */ 064 public static File createFile(final URI uri) { 065 return OioRegistry.getInstance().getFileFactory().createFile(uri); 066 } 067 068 /** Creates a temporary directory. */ 069 public static File createTempDirectory(final String prefix) throws IOException { 070 return OioRegistry.getInstance().getFileFactory().createTempDirectory(prefix); 071 } 072 073 /** Creates a temporary file. */ 074 public static File createTempFile(final String prefix, final String suffix) throws IOException { 075 return OioRegistry.getInstance().getFileFactory().createTempFile(prefix, suffix); 076 } 077 /** Creates a temporary file within specified parent directory. */ 078 public static File createTempFile(final String prefix, final String suffix, final File dir) throws IOException { 079 return OioRegistry.getInstance().getFileFactory().createTempFile(prefix, suffix, dir); 080 } 081 082 /** 083 * Lists the file system roots (wraps {@link java.io.File#listRoots()}). 084 * @return the file system roots. Never <code>null</code>. 085 */ 086 public static File[] listRootFiles() { 087 return OioRegistry.getInstance().getFileFactory().listRootFiles(); 088 } 089}