Android文件操作工具类
MTK中看到的一个文件操作的工具类贴出来大家使用节省时间。
import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import com.android.videoeditor.R;import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Bitmap.CompressFormat;import android.media.videoeditor.MediaProperties;import android.os.Environment;import android.util.Log;/** * File utilities */public class FileUtils { // Logging private static final String TAG = "FileUtils"; /** * It is not possible to instantiate this class */ private FileUtils() { } /** * Gets the root path for all projects * * @param context The context * * @return The file representing the projects root directory, {@code null} if the external * storage is not currnetly mounted */ public static File getProjectsRootDir(Context context) throws FileNotFoundException, IOException { final File dir = MtkUtils.getExternalFilesDir(context);//context.getExternalFilesDir(null); if (dir != null && !dir.exists()) { if (!dir.mkdirs()) { throw new FileNotFoundException("Cannot create folder: " + dir.getAbsolutePath()); } else { // Create the file which hides the media files if (!new File(dir, ".nomedia").createNewFile()) { throw new FileNotFoundException("Cannot create file .nomedia"); } } } return dir; } /** * Get the filename for the specified raw resource id. Create the file if * the file does not exist. * * @param context The context * @param maskRawResourceId The mask raw resource id * * @return The mask filename */ public static String getMaskFilename(Context context, int maskRawResourceId) throws FileNotFoundException, IOException { final String filename; switch (maskRawResourceId) { case R.raw.mask_contour: { filename = "mask_countour.jpg"; break; } case R.raw.mask_diagonal: { filename = "mask_diagonal.jpg"; break; } default: { throw new IllegalArgumentException("Invalid mask raw resource id"); } } final File mf = new File(context.getFilesDir(), filename); if (!mf.exists()) { Bitmap bitmap = null; FileOutputStream fos = null; InputStream is = null; try { is = context.getResources().openRawResource(maskRawResourceId); bitmap = BitmapFactory.decodeStream(is); if (bitmap == null) { throw new IllegalStateException("Cannot decode raw resource mask"); } fos = context.openFileOutput(filename, Context.MODE_WORLD_READABLE); if (!bitmap.compress(CompressFormat.JPEG, 100, fos)) { throw new IllegalStateException("Cannot compress bitmap"); } } finally { if (is != null) { is.close(); } if (bitmap != null) { bitmap.recycle(); } if (fos != null) { fos.flush(); fos.close(); } } } return mf.getAbsolutePath(); } /** * Get the raw id for the mask file * * @param path The full file name * * @return The raw id */ public static int getMaskRawId(String path) { final String filename = new File(path).getName(); if (filename.equals("mask_countour.jpg")) { return R.raw.mask_contour; } else if (filename.equals("mask_diagonal.jpg")) { return R.raw.mask_diagonal; } else { throw new IllegalArgumentException("Unknown file: " + path); } } /** * Get the filename for the specified raw resource id. Create the file if * the file does not exist * * @param context The context * @param rawResourceId The raw resource id * * @return The audio track filename */ public static String getAudioTrackFilename(Context context, int rawResourceId) throws FileNotFoundException, IOException { final String filename; switch (rawResourceId) { case R.raw.theme_travel_audio_track: { filename = "theme_travel.m4a"; break; } case R.raw.theme_surfing_audio_track: { filename = "theme_surfing.m4a"; break; } case R.raw.theme_film_audio_track: { filename = "theme_film.m4a"; break; } case R.raw.theme_rockandroll_audio_track: { filename = "theme_rockandroll.m4a"; break; } default: { throw new IllegalArgumentException("Invalid audio track raw resource id"); } } final File mf = new File(context.getFilesDir(), filename); if (!mf.exists()) { FileOutputStream fos = null; InputStream is = null; try { is = context.getResources().openRawResource(rawResourceId); fos = context.openFileOutput(filename, Context.MODE_WORLD_READABLE); final byte[] buffer = new byte[1024]; int bytesRead; while ((bytesRead = is.read(buffer)) > 0) { fos.write(buffer, 0, bytesRead); } } finally { if (is != null) { is.close(); } if (fos != null) { fos.flush(); fos.close(); } } } return mf.getAbsolutePath(); } /** * Create a new project directory * * @return The absolute path to the project */ public static String createNewProjectPath(Context context) throws FileNotFoundException, IOException { final File file = new File(getProjectsRootDir(context), StringUtils.randomString(10)); if (Log.isLoggable(TAG, Log.DEBUG)) { Log.d(TAG, "New project: " + file.getAbsolutePath()); } return file.getAbsolutePath(); } /** * Get a unique video filename. * * @param fileType The file type * * @return The filename */ public static String createMovieName(int fileType) { final String filename; switch (fileType) { case MediaProperties.FILE_MP4: { filename = "movie_" + StringUtils.randomStringOfNumbers(6) + ".mp4"; break; } case MediaProperties.FILE_3GP: { filename = "movie_" + StringUtils.randomStringOfNumbers(6) + ".3gp"; break; } default: { throw new IllegalArgumentException("Unsupported file type: " + fileType); } } /// M: support switching sdcard for exporting movie @{ // final File moviesDirectory = Environment.getExternalStoragePublicDirectory( // Environment.DIRECTORY_MOVIES); final File moviesDirectory = new File(MtkUtils.getMovieExportPath()); /// @} // Make this directory if it does not exist if (!moviesDirectory.exists()) { moviesDirectory.mkdirs(); } final File f = new File(moviesDirectory, filename); return f.getAbsolutePath(); } /** * Delete all the files in the specified folder and the folder itself. * * @param dir The project path */ public static boolean deleteDir(File dir) { if (dir.isDirectory()) { final String[] children = dir.list(); for (int i = 0; i < children.length; i++) { final File f = new File(dir, children[i]); if (!deleteDir(f)) { Log.e(TAG, "File cannot be deleted: " + f.getAbsolutePath()); return false; } } } // The directory is now empty so delete it return dir.delete(); } /** * Get the name of the file * * @param filename The full path filename * @return The name of the file */ public static String getSimpleName(String filename) { final int index = filename.lastIndexOf('/'); if (index == -1) { return filename; } else { return filename.substring(index + 1); } }}
>更多相关文章
首页推荐
佛山市东联科技有限公司一直秉承“一切以用户价值为依归
- 01-11全球最受赞誉公司揭晓:苹果连续九年第一
- 12-09罗伯特·莫里斯:让黑客真正变黑
- 12-09谁闯入了中国网络?揭秘美国绝密黑客小组TA
- 12-09警示:iOS6 惊现“闪退”BUG
- 12-05亚马逊推出新一代基础模型 任意模态生成大模
- 12-05OpenAI拓展欧洲业务 将在苏黎世设立办公室
- 12-05微软质疑美国联邦贸易委员会泄露信息 督促其
- 12-05联交所取消宝宝树上市地位 宝宝树:不会对公
- 12-04企业微信致歉:文档打开异常已完成修复
相关文章
24小时热门资讯
24小时回复排行
热门推荐
最新资讯
操作系统
黑客防御