package photato.helpers;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.function.Predicate;
import java.util.zip.GZIPOutputStream;
import org.apache.commons.io.filefilter.NameFileFilter;
public class FileHelper {
public synchronized static String readFile(String filename) throws IOException {
return readFile(new File(filename));
}
public synchronized static String readFile(File filename) throws IOException {
StringBuilder result = new StringBuilder();
InputStream ips = new FileInputStream(filename);
InputStreamReader ipsr = new InputStreamReader(ips);
try (BufferedReader br = new BufferedReader(ipsr)) {
String line;
while ((line = br.readLine()) != null) {
result.append(line).append("\n");
}
}
return result.toString();
}
public synchronized static String[] readFileLines(File filename) throws IOException {
List<String> result = new ArrayList<>();
InputStream ips = new FileInputStream(filename);
InputStreamReader ipsr = new InputStreamReader(ips);
BufferedReader br = new BufferedReader(ipsr);
String line;
while ((line = br.readLine()) != null) {
result.add(line);
}
br.close();
return result.toArray(new String[result.size()]);
}
public synchronized static void writeFile(File filename, String data, boolean gzip) throws IOException {
OutputStream outputStream = null;
try {
outputStream = new FileOutputStream(filename);
if (gzip) {
outputStream = new GZIPOutputStream(outputStream);
}
try (BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(outputStream, "UTF-8"))) {
writer.write(data);
}
} finally {
if (outputStream != null) {
outputStream.close();
}
}
}
public synchronized static void writeFile(File file, byte[] data) throws IOException {
file.mkdirs();
try (FileOutputStream fos = new FileOutputStream(file)) {
fos.write(data);
}
}
public synchronized static void writeFile(File filename, String data) throws IOException {
writeFile(filename, data, false);
}
public synchronized static void writeLines(File filename, String[] lines, boolean gzip) throws IOException {
writeFile(filename, String.join("\n", lines), gzip);
}
public synchronized static void writeLines(File filename, Collection<String> lines, boolean gzip) throws IOException {
writeFile(filename, String.join("\n", lines), gzip);
}
public synchronized static void writeLines(File filename, String[] lines) throws IOException {
writeFile(filename, String.join("\n", lines));
}
public synchronized static void writeLines(File filename, Collection<String> lines) throws IOException {
writeFile(filename, String.join("\n", lines));
}
public synchronized static void appendFile(File filename, String data) throws IOException {
try (BufferedWriter out = new BufferedWriter(new FileWriter(filename, true))) {
out.write(data);
}
}
public synchronized static void appendFileLine(File filename, String data) throws IOException {
appendFile(filename, data + "\n");
}
public static String getExtension(String path) {
int p = path.lastIndexOf(".");
if (p == -1) {
return null;
} else {
return path.substring(path.lastIndexOf(".") + 1);
}
}
public static boolean folderContainsIgnoreFile(Path folder) {
if (Files.isReadable(folder)) {
try {
return Files.list(folder).anyMatch((Path path) -> path.getFileName().toString().equalsIgnoreCase(".photatoignore"));
} catch (IOException ex) {
return false;
}
} else {
return false;
}
}
}