You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
FFmpegAndroid/app/src/main/java/com/frank/ffmpeg/util/FileUtil.java

221 lines
7.1 KiB

package com.frank.ffmpeg.util;
import android.text.TextUtils;
import android.util.Log;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
/**
* file tool
* Created by frank on 2018/5/9.
*/
public class FileUtil {
private final static String TYPE_MP3 = "mp3";
private final static String TYPE_AAC = "aac";
private final static String TYPE_AMR = "amr";
private final static String TYPE_FLAC = "flac";
private final static String TYPE_M4A = "m4a";
private final static String TYPE_WMA = "wma";
private final static String TYPE_WAV = "wav";
private final static String TYPE_OGG = "ogg";
private final static String TYPE_AC3 = "ac3";
public final static String TYPE_MP4 = "mp4";
private final static String TYPE_MKV = "mkv";
private final static String TYPE_WEBM = "webm";
private final static String TYPE_AVI = "avi";
private final static String TYPE_WMV = "wmv";
private final static String TYPE_FLV = "flv";
private final static String TYPE_TS = "ts";
private final static String TYPE_M3U8 = "m3u8";
private final static String TYPE_3GP = "3gp";
private final static String TYPE_MOV = "mov";
private final static String TYPE_MPG = "mpg";
public static boolean concatFile(String srcFilePath, String appendFilePath, String concatFilePath) {
if (TextUtils.isEmpty(srcFilePath)
|| TextUtils.isEmpty(appendFilePath)
|| TextUtils.isEmpty(concatFilePath)) {
return false;
}
File srcFile = new File(srcFilePath);
if (!srcFile.exists()) {
return false;
}
File appendFile = new File(appendFilePath);
if (!appendFile.exists()) {
return false;
}
FileOutputStream outputStream = null;
FileInputStream inputStream1 = null, inputStream2 = null;
try {
inputStream1 = new FileInputStream(srcFile);
inputStream2 = new FileInputStream(appendFile);
outputStream = new FileOutputStream(new File(concatFilePath));
byte[] data = new byte[1024];
int len;
while ((len = inputStream1.read(data)) > 0) {
outputStream.write(data, 0, len);
}
outputStream.flush();
while ((len = inputStream2.read(data)) > 0) {
outputStream.write(data, 0, len);
}
outputStream.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (inputStream1 != null) {
inputStream1.close();
}
if (inputStream2 != null) {
inputStream2.close();
}
if (outputStream != null) {
outputStream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return true;
}
/**
* check the file exist or not
*
* @param path the path of file
* @return result of exist or not
*/
public static boolean checkFileExist(String path) {
if (TextUtils.isEmpty(path)) {
return false;
}
File file = new File(path);
if (!file.exists()) {
Log.e("FileUtil", path + " is not exist!");
return false;
}
return true;
}
public static boolean isAudio(String path) {
if (TextUtils.isEmpty(path)) {
return false;
}
path = path.toLowerCase();
return path.endsWith(TYPE_MP3)
|| path.endsWith(TYPE_AAC)
|| path.endsWith(TYPE_AMR)
|| path.endsWith(TYPE_FLAC)
|| path.endsWith(TYPE_M4A)
|| path.endsWith(TYPE_WMA)
|| path.endsWith(TYPE_WAV)
|| path.endsWith(TYPE_OGG)
|| path.endsWith(TYPE_AC3);
}
public static boolean isVideo(String path) {
if (TextUtils.isEmpty(path)) {
return false;
}
path = path.toLowerCase();
return path.endsWith(TYPE_MP4)
|| path.endsWith(TYPE_MKV)
|| path.endsWith(TYPE_WEBM)
|| path.endsWith(TYPE_WMV)
|| path.endsWith(TYPE_AVI)
|| path.endsWith(TYPE_FLV)
|| path.endsWith(TYPE_3GP)
|| path.endsWith(TYPE_TS)
|| path.endsWith(TYPE_M3U8)
|| path.endsWith(TYPE_MOV)
|| path.endsWith(TYPE_MPG);
}
public static String getFileSuffix(String fileName) {
if (TextUtils.isEmpty(fileName) || !fileName.contains(".")) {
return null;
}
return fileName.substring(fileName.lastIndexOf("."));
}
public static String getFilePath(String filePath) {
if (TextUtils.isEmpty(filePath) || !filePath.contains("/")) {
return null;
}
return filePath.substring(0, filePath.lastIndexOf("/"));
}
public static String getFileName(String filePath) {
if (TextUtils.isEmpty(filePath) || !filePath.contains("/")) {
return null;
}
return filePath.substring(filePath.lastIndexOf("/") + 1);
}
public static String createListFile(String listPath, List<String> fileList) {
if ((TextUtils.isEmpty(listPath) || fileList == null || fileList.size() == 0)) {
return null;
}
FileOutputStream outputStream = null;
try {
File listFile = new File(listPath);
if (!listFile.getParentFile().exists()) {
if (!listFile.mkdirs()) {
return null;
}
}
if (!listFile.exists()) {
if (!listFile.createNewFile()) {
return null;
}
}
outputStream = new FileOutputStream(listFile);
StringBuilder fileBuilder = new StringBuilder();
for (String file : fileList) {
fileBuilder
.append("file")
.append(" ")
.append("'")
.append(file)
.append("'")
.append("\n");
}
byte[] fileData = fileBuilder.toString().getBytes();
outputStream.write(fileData, 0, fileData.length);
outputStream.flush();
return listFile.getAbsolutePath();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (outputStream != null) {
try {
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return null;
}
public static boolean ensureDir(String fileDir) {
if (TextUtils.isEmpty(fileDir)) {
return false;
}
File listFile = new File(fileDir);
if (!listFile.exists()) {
return listFile.mkdirs();
}
return true;
}
}