• 【ListViewJSON】【com.demo.app.common】【FileUtils】源码分析及其在工程中作用


    源码如下:

    package com.demo.app.common;
    
    import java.io.ByteArrayOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    
    import android.content.Context;
    import android.os.Environment;
    import android.os.StatFs;
    import android.util.Log;
    
    /** 
     * 文件操作工具包
     * @version 1.0
     * @created 2012-3-21
     */
    public class FileUtils 
    {
        /**
         * 写文本文件
         * 在Android系统中,文件保存在 /data/data/PACKAGE_NAME/files 目录下
         * @param context
         * @param msg
         */
        public static void write(Context context, String fileName, String content) 
        { 
            if( content == null )    content = "";
            
            try 
            {
                FileOutputStream fos = context.openFileOutput(fileName, Context.MODE_PRIVATE);
                fos.write( content.getBytes() ); 
                
                fos.close();
            }
            catch (Exception e) 
            {
                e.printStackTrace();
            } 
        }
        
        /**
         * 读取文本文件
         * @param context
         * @param fileName
         * @return
         */
        public static String read( Context context, String fileName ) 
        {
            try 
            {
                FileInputStream in = context.openFileInput(fileName);
                return readInStream(in);
            } 
            catch (Exception e) 
            {
                e.printStackTrace();
            }
            return "";
        } 
        
        private static String readInStream(FileInputStream inStream)
        {
            try 
            {
               ByteArrayOutputStream outStream = new ByteArrayOutputStream();
               byte[] buffer = new byte[512];
               int length = -1;
               while((length = inStream.read(buffer)) != -1 )
               {
                   outStream.write(buffer, 0, length);
               }
               
               outStream.close();
               inStream.close();
               return outStream.toString();
            } 
            catch (IOException e)
            {
               Log.i("FileTest", e.getMessage()); 
            }
            return null;
        }
        
        public static File createFile( String folderPath, String fileName )
        {
            File destDir = new File(folderPath);
            if (!destDir.exists()) 
            {
                destDir.mkdirs();
            }
            return new File(folderPath,  fileName + fileName );
        }
        
        /**
         * 向手机写图片
         * @param buffer   
         * @param folder
         * @param fileName
         * @return
         */
        public static boolean writeFile( byte[] buffer, String folder, String fileName )
        {
            boolean writeSucc = false;
            
            boolean sdCardExist = Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);
            
            String folderPath = "";
            if( sdCardExist )
            {
                folderPath = Environment.getExternalStorageDirectory() + File.separator +  folder + File.separator;
            }
            else
            {
                writeSucc =false;
            }
            
            File fileDir = new File(folderPath);
            if(!fileDir.exists()) 
            {
                fileDir.mkdirs();
            }
              
            File file = new File( folderPath + fileName );
            FileOutputStream out = null;
            try 
            {
                out = new FileOutputStream( file );
                out.write(buffer);
                writeSucc = true;
            } 
            catch (Exception e) 
            {
                e.printStackTrace();
            }
            finally
            {
                try {out.close();} catch (IOException e) {e.printStackTrace();}
            }
            
            return writeSucc;
        }
        
        /**
         * 根据文件绝对路径获取文件名
         * @param filePath
         * @return
         */
        public static String getFileName( String filePath )
        {
            if( StringUtils.isEmpty(filePath) )    return "";
            return filePath.substring( filePath.lastIndexOf( File.separator )+1 );
        }
        /**
         * 根据文件的绝对路径获取文件名但不包含扩展名
         * @param filePath
         * @return
         */
        public static String getFileNameNoFormat( String filePath){
            if(StringUtils.isEmpty(filePath)){
                return "";
            }
            int point = filePath.lastIndexOf('.');
            return filePath.substring(filePath.lastIndexOf(File.separator)+1,point);
        }
        
        /**
         * 获取文件扩展名
         * @param fileName
         * @return
         */
        public static String getFileFormat( String fileName )
        {
            if( StringUtils.isEmpty(fileName) )    return "";
            
            int point = fileName.lastIndexOf( '.' );
            return fileName.substring( point+1 );
        }
        
        /**
         * 获取文件大小
         * @param filePath
         * @return
         */
        public static long getFileSize( String filePath )
        {
            long size = 0;
            
            File file = new File( filePath );
            if(file!=null && file.exists())
            {
                size = file.length();
            } 
            return size;
        }
        
        /**
         * 获取文件大小
         * @param size 字节
         * @return
         */
        public static String getFileSize(long size) 
        {
            if (size <= 0)    return "0";
            java.text.DecimalFormat df = new java.text.DecimalFormat("##.##");
            float temp = (float)size / 1024;
            if (temp >= 1024) 
            {
                return df.format(temp / 1024) + "M";
            }
            else 
            {
                return df.format(temp) + "K";
            }
        }
    
        /**
         * 转换文件大小
         * @param fileS
         * @return B/KB/MB/GB
         */
        public static String formatFileSize(long fileS) {
            java.text.DecimalFormat df = new java.text.DecimalFormat("#.00");
            String fileSizeString = "";
            if (fileS < 1024) {
                fileSizeString = df.format((double) fileS) + "B";
            } else if (fileS < 1048576) {
                fileSizeString = df.format((double) fileS / 1024) + "KB";
            } else if (fileS < 1073741824) {
                fileSizeString = df.format((double) fileS / 1048576) + "MB";
            } else {
                fileSizeString = df.format((double) fileS / 1073741824) + "G";
            }
            return fileSizeString;
        }
    
        /**
         * 获取目录文件大小
         * @param dir
         * @return
         */
        public static long getDirSize(File dir) {
            if (dir == null) {
                return 0;
            }
            if (!dir.isDirectory()) {
                return 0;
            }
            long dirSize = 0;
            File[] files = dir.listFiles();
            for (File file : files) {
                if (file.isFile()) {
                    dirSize += file.length();
                } else if (file.isDirectory()) {
                    dirSize += file.length();
                    dirSize += getDirSize(file); //递归调用继续统计
                }
            }
            return dirSize;
        }
        
        /**
         * 获取目录文件个数
         * @param f
         * @return
         */
        public long getFileList(File dir){
            long count = 0;
            File[] files = dir.listFiles();
            count = files.length;
            for (File file : files) {
                if (file.isDirectory()) {
                    count = count + getFileList(file);//递归
                    count--;
                }
            }
            return count;  
        }
        
        public static byte[] toBytes(InputStream in) throws IOException 
        {
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            int ch;
            while ((ch = in.read()) != -1)
            {
                out.write(ch);
            }
            byte buffer[]=out.toByteArray();
            out.close();
            return buffer;
        }
        
        /**
         * 检查文件是否存在
         * @param name
         * @return
         */
        public static boolean checkFileExists(String name) {
            boolean status;
            if (!name.equals("")) {
                File path = Environment.getExternalStorageDirectory();
                File newPath = new File(path.toString() + name);
                status = newPath.exists();
            } else {
                status = false;
            }
            return status;
    
        }
        
        /**
         * 计算SD卡的剩余空间
         * @return 返回-1,说明没有安装sd卡
         */
        public static long getFreeDiskSpace() {
            String status = Environment.getExternalStorageState();
            long freeSpace = 0;
            if (status.equals(Environment.MEDIA_MOUNTED)) {
                try {
                    File path = Environment.getExternalStorageDirectory();
                    StatFs stat = new StatFs(path.getPath());
                    long blockSize = stat.getBlockSize();
                    long availableBlocks = stat.getAvailableBlocks();
                    freeSpace = availableBlocks * blockSize / 1024;
                } catch (Exception e) {
                    e.printStackTrace();
                }
            } else {
                return -1;
            }
            return (freeSpace);
        }
    
        /**
         * 新建目录
         * @param directoryName
         * @return
         */
        public static boolean createDirectory(String directoryName) {
            boolean status;
            if (!directoryName.equals("")) {
                File path = Environment.getExternalStorageDirectory();
                File newPath = new File(path.toString() + directoryName);
                status = newPath.mkdir();
                status = true;
            } else
                status = false;
            return status;
        }
    
        /**
         * 检查是否安装SD卡
         * @return
         */
        public static boolean checkSaveLocationExists() {
            String sDCardStatus = Environment.getExternalStorageState();
            boolean status;
            if (sDCardStatus.equals(Environment.MEDIA_MOUNTED)) {
                status = true;
            } else
                status = false;
            return status;
        }
    
        /**
         * 删除目录(包括:目录里的所有文件)
         * @param fileName
         * @return
         */
        public static boolean deleteDirectory(String fileName) {
            boolean status;
            SecurityManager checker = new SecurityManager();
    
            if (!fileName.equals("")) {
    
                File path = Environment.getExternalStorageDirectory();
                File newPath = new File(path.toString() + fileName);
                checker.checkDelete(newPath.toString());
                if (newPath.isDirectory()) {
                    String[] listfile = newPath.list();
                    // delete all files within the specified directory and then
                    // delete the directory
                    try {
                        for (int i = 0; i < listfile.length; i++) {
                            File deletedFile = new File(newPath.toString() + "/"
                                    + listfile[i].toString());
                            deletedFile.delete();
                        }
                        newPath.delete();
                        Log.i("DirectoryManager deleteDirectory", fileName);
                        status = true;
                    } catch (Exception e) {
                        e.printStackTrace();
                        status = false;
                    }
    
                } else
                    status = false;
            } else
                status = false;
            return status;
        }
    
        /**
         * 删除文件
         * @param fileName
         * @return
         */
        public static boolean deleteFile(String fileName) {
            boolean status;
            SecurityManager checker = new SecurityManager();
    
            if (!fileName.equals("")) {
    
                File path = Environment.getExternalStorageDirectory();
                File newPath = new File(path.toString() + fileName);
                checker.checkDelete(newPath.toString());
                if (newPath.isFile()) {
                    try {
                        Log.i("DirectoryManager deleteFile", fileName);
                        newPath.delete();
                        status = true;
                    } catch (SecurityException se) {
                        se.printStackTrace();
                        status = false;
                    }
                } else
                    status = false;
            } else
                status = false;
            return status;
        }
    }
  • 相关阅读:
    图解:最短路径之迪杰斯特拉算法
    动态规划只能用来求最值吗?
    动态规划的实际应用:图片压缩算法
    一线互联网公司程序员技术面试的流程以及注意事项
    LeetCode 图解 | 38. 外观数列
    太赞了,VSCode 上也能画流程图了!
    疯狂JAVA讲义学习——基础代码练习——重写(Override)——方法覆盖——重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写!
    疯狂JAVA讲义学习——基础代码练习——继承extends关键字、this、super、构造器
    JAVA面向对象学习——java面向对象概念———Java 枚举(enum)
    JAVA面向对象学习——java面向对象概念———lambda表达式
  • 原文地址:https://www.cnblogs.com/hikigaya-yukino/p/4171387.html
Copyright © 2020-2023  润新知