mirror of
https://github.com/gsantner/dandelion
synced 2025-09-10 18:59:42 +02:00
Update opoc
This commit is contained in:
parent
65ba10712f
commit
957573ea83
12 changed files with 161 additions and 12 deletions
|
@ -20,15 +20,19 @@ import java.io.File;
|
|||
import java.io.FileInputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.FileReader;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.OutputStream;
|
||||
import java.net.URLConnection;
|
||||
import java.text.DecimalFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
@SuppressWarnings({"WeakerAccess", "unused", "SameParameterValue", "SpellCheckingInspection", "deprecation"})
|
||||
|
@ -36,6 +40,15 @@ public class FileUtils {
|
|||
// Used on methods like copyFile(src, dst)
|
||||
private static final int BUFFER_SIZE = 4096;
|
||||
|
||||
public static String readTextFileFast(final File file) {
|
||||
try {
|
||||
return new String(readCloseBinaryStream(new FileInputStream(file)));
|
||||
} catch (FileNotFoundException e) {
|
||||
System.err.println("readTextFileFast: File " + file + " not found.");
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
public static String readTextFile(final File file) {
|
||||
try {
|
||||
return readCloseTextStream(new FileInputStream(file));
|
||||
|
@ -337,4 +350,94 @@ public class FileUtils {
|
|||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Try to detect MimeType by backwards compatible methods
|
||||
*/
|
||||
public static String getMimeType(File file) {
|
||||
String guess = null;
|
||||
if (file != null && file.exists() && file.isFile()) {
|
||||
InputStream is = null;
|
||||
try {
|
||||
is = new BufferedInputStream(new FileInputStream(file));
|
||||
guess = URLConnection.guessContentTypeFromStream(is);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
if (is != null) {
|
||||
try {
|
||||
is.close();
|
||||
} catch (IOException ignored) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (guess == null || guess.isEmpty()) {
|
||||
guess = "*/*";
|
||||
int dot = file.getName().lastIndexOf(".") + 1;
|
||||
if (dot > 0 && dot < file.getName().length()) {
|
||||
switch (file.getName().substring(dot)) {
|
||||
case "md":
|
||||
case "markdown":
|
||||
case "mkd":
|
||||
case "mdown":
|
||||
case "mkdn":
|
||||
case "mdwn":
|
||||
case "rmd":
|
||||
guess = "text/markdown";
|
||||
break;
|
||||
case "txt":
|
||||
guess = "text/plain";
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return guess;
|
||||
}
|
||||
|
||||
public static boolean isTextFile(File file) {
|
||||
return getMimeType(file).startsWith("text/");
|
||||
}
|
||||
|
||||
/**
|
||||
* Analyze given textfile and retrieve multiple information from it
|
||||
* Information is written back to the {@link AtomicInteger} parameters
|
||||
*/
|
||||
public static void retrieveTextFileSummary(File file, AtomicInteger numCharacters, AtomicInteger numLines) {
|
||||
BufferedReader br = null;
|
||||
try {
|
||||
br = new BufferedReader(new FileReader(file));
|
||||
String line;
|
||||
while ((line = br.readLine()) != null) {
|
||||
numLines.getAndIncrement();
|
||||
numCharacters.getAndSet(numCharacters.get() + line.length());
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
numCharacters.set(-1);
|
||||
numLines.set(-1);
|
||||
} finally {
|
||||
if (br != null) {
|
||||
try {
|
||||
br.close();
|
||||
} catch (IOException ignored) {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Format filesize to human readable format
|
||||
* Get size in bytes e.g. from {@link File} using {@code File#length()}
|
||||
*/
|
||||
public static String getReadableFileSize(long size, boolean abbreviation) {
|
||||
if (size <= 0) {
|
||||
return "0B";
|
||||
}
|
||||
String[] units = abbreviation ? new String[]{"B", "kB", "MB", "GB", "TB"} : new String[]{"Bytes", "Kilobytes", "Megabytes", "Gigabytes", "Terabytes"};
|
||||
int unit = (int) (Math.log10(size) / Math.log10(1024));
|
||||
return new DecimalFormat("#,##0.#").format(size / Math.pow(1024, unit))
|
||||
+ " " + units[unit];
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue