138 lines
3.6 KiB
Java
138 lines
3.6 KiB
Java
package com.github.catvod.utils;
|
|
|
|
import android.os.Environment;
|
|
|
|
import com.github.catvod.crawler.SpiderDebug;
|
|
import com.github.catvod.spider.Init;
|
|
|
|
import java.io.File;
|
|
import java.io.FileInputStream;
|
|
import java.io.FileOutputStream;
|
|
import java.io.IOException;
|
|
import java.io.InputStream;
|
|
import java.nio.charset.StandardCharsets;
|
|
import java.util.Arrays;
|
|
import java.util.Collections;
|
|
import java.util.List;
|
|
|
|
public class Path {
|
|
|
|
private static File mkdir(File file) {
|
|
if (!file.exists()) file.mkdirs();
|
|
return file;
|
|
}
|
|
|
|
public static File download() {
|
|
return Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
|
|
}
|
|
|
|
public static File root() {
|
|
return Environment.getExternalStorageDirectory();
|
|
}
|
|
|
|
public static File cache() {
|
|
return Init.context().getCacheDir();
|
|
}
|
|
|
|
public static File files() {
|
|
return Init.context().getFilesDir();
|
|
}
|
|
|
|
public static File tv() {
|
|
return mkdir(new File(root() + File.separator + "TV"));
|
|
}
|
|
|
|
public static File cache(String path) {
|
|
return mkdir(new File(cache(), path));
|
|
}
|
|
|
|
public static File tv(String name) {
|
|
if (!name.startsWith(".")) name = "." + name;
|
|
return new File(tv(), name);
|
|
}
|
|
|
|
public static String read(File file) {
|
|
try {
|
|
return read(new FileInputStream(file));
|
|
} catch (Exception e) {
|
|
return "";
|
|
}
|
|
}
|
|
|
|
public static String read(InputStream is) {
|
|
try {
|
|
byte[] data = new byte[is.available()];
|
|
is.read(data);
|
|
is.close();
|
|
return new String(data, StandardCharsets.UTF_8);
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
return "";
|
|
}
|
|
}
|
|
|
|
public static File write(File file, String data) {
|
|
return write(file, data.getBytes());
|
|
}
|
|
|
|
public static File write(File file, byte[] data) {
|
|
try {
|
|
FileOutputStream fos = new FileOutputStream(create(file));
|
|
fos.write(data);
|
|
fos.flush();
|
|
fos.close();
|
|
return file;
|
|
} catch (Exception ignored) {
|
|
return file;
|
|
}
|
|
}
|
|
|
|
public static void copy(File in, File out) {
|
|
try {
|
|
copy(new FileInputStream(in), out);
|
|
} catch (Exception ignored) {
|
|
}
|
|
}
|
|
|
|
public static void copy(InputStream in, File out) {
|
|
try {
|
|
int read;
|
|
byte[] buffer = new byte[8192];
|
|
FileOutputStream fos = new FileOutputStream(create(out));
|
|
while ((read = in.read(buffer)) != -1) fos.write(buffer, 0, read);
|
|
fos.close();
|
|
in.close();
|
|
} catch (Exception ignored) {
|
|
}
|
|
}
|
|
|
|
public static void move(File in, File out) {
|
|
copy(in, out);
|
|
clear(in);
|
|
}
|
|
|
|
public static void clear(File dir) {
|
|
if (dir == null) return;
|
|
if (dir.isDirectory()) for (File file : list(dir)) clear(file);
|
|
if (dir.delete()) SpiderDebug.log("Deleted:" + dir.getAbsolutePath());
|
|
}
|
|
|
|
public static List<File> list(File dir) {
|
|
File[] files = dir.listFiles();
|
|
return files == null ? Collections.emptyList() : Arrays.asList(files);
|
|
}
|
|
|
|
public static File create(File file) throws Exception {
|
|
try {
|
|
if (file.getParentFile() != null) mkdir(file.getParentFile());
|
|
if (!file.canWrite()) file.setWritable(true);
|
|
if (!file.exists()) file.createNewFile();
|
|
Shell.exec("chmod 777 " + file);
|
|
return file;
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
return file;
|
|
}
|
|
}
|
|
}
|