首先要导入外包 log4j-1.2.16.jar
代码如下:
1 package com.car273.util; 2 3 4 5 import java.io.BufferedReader; 6 import java.io.File; 7 import java.io.FileInputStream; 8 import java.io.FileNotFoundException; 9 import java.io.FileOutputStream; 10 import java.io.FileReader; 11 import java.io.IOException; 12 import java.io.OutputStream; 13 14 import org.apache.log4j.Logger; 15 16 import android.os.Environment; 17 import android.os.StatFs; 18 20 21 /** 22 * 关于SD卡上的操作方法集 23 * 24 * @author Administrator 25 * 26 */ 27 public class SDcardUtil { 28 /** log4j对象 */ 29 private static final Logger logger = Logger.getLogger(SDcardUtil.class); 30 31 /** 32 * 判断SD卡是否可用 33 * 34 * @return 有sd卡返回true,无sd卡返回false 35 */ 36 public static boolean isSDcardCanUse() { 37 try { 38 return Environment.getExternalStorageState().equals( 39 Environment.MEDIA_MOUNTED); 40 } catch (Exception e) { 41 e.printStackTrace(); 42 } 43 return false; 44 } 45 46 /** 获取SD卡路径 **/ 47 public static String getSDcardPath() { 48 File sdDir = null; 49 boolean sdCardExist = Environment.getExternalStorageState().equals( 50 android.os.Environment.MEDIA_MOUNTED); // 判断sd卡是否存在 51 if (sdCardExist) { 52 sdDir = Environment.getExternalStorageDirectory();// 获取跟目录 53 } 54 if(sdDir ==null){ 55 return "/mnt/sdcard"; 56 } 57 return sdDir.toString(); 58 } 59 60 /** 61 * 外部存储空间信息 62 * 63 * @return 当前可用的存储空间大小 64 */ 65 public static long getExternalStorageSize() { 66 if (isSDcardCanUse()) { 67 // 判断外部存储空间 68 File path = Environment.getExternalStorageDirectory(); 69 StatFs stat = new StatFs(path.getPath()); 70 long blockSize = stat.getBlockSize(); 71 long availableBlocks = stat.getAvailableBlocks(); 72 availableBlocks *= blockSize; 73 if (availableBlocks >= GlobalData.MIN_SPACE_SIZE) 74 return availableBlocks; 75 } 76 return 0; 77 } 78 79 /** 80 * 获得文件大小 81 * 82 * @return 文件大小 -1表示文件不存在 83 * @throws FileNotFoundException 84 * @throws IOException 85 */ 86 @SuppressWarnings("resource") 87 public static int getFileSize(File file) throws FileNotFoundException, 88 IOException { 89 if (isFileExisted(file)) 90 return (new FileInputStream(file)).available(); 91 else 92 return -1; 93 } 94 95 /** 96 * 判断文件是否存在 97 * 98 * @return 99 */ 100 public static boolean isFileExisted(File file) { 101 return file.exists(); 102 } 103 104 /** 105 * @param bytes 106 * 字节数组 107 * @param flag 108 * 是否追加形式写入文件 109 * @param dirPath 110 * 文件目录(目录不存在则创建目录) 111 * @param fileName 112 * 文件名 113 * @return 1:成功 0:写入过程中失败 -1:流关闭失败 114 * @throws IOException 115 */ 116 public static int writeSDCardByBytes(byte[] bytes, boolean flag, 117 String dirPath, String fileName) throws IOException { 118 OutputStream output = null; 119 try { 120 createDirInSDCard(dirPath); 121 output = new FileOutputStream(new File(dirPath + File.separator 122 + fileName), flag); 123 output.write(bytes); 124 output.flush(); 125 } catch (IOException e) { 126 e.printStackTrace(); 127 logger.error(Car273Util.dumpThrowable(e)); 128 throw e; 129 } finally { 130 try { 131 if (output != null) 132 output.close(); 133 } catch (IOException e) { 134 logger.error(Car273Util.dumpThrowable(e)); 135 e.printStackTrace(); 136 return -1; 137 } 138 } 139 return 1; 140 } 141 142 /** 143 * 根据路径dir创建文件目录 144 * 145 * @param dir 146 * @return 147 */ 148 private static File createDirInSDCard(String dir) { 149 File fileDir = new File(dir); 150 fileDir.mkdir(); 151 return fileDir; 152 } 153 154 /** 155 * 读取文件 156 * @param f 要读取的文件 157 * @return 文件信息字符串 158 * @throws IOException 读取异常 159 */ 160 public static String loadFileToString(File f) throws IOException { 161 // long beginTime = System.currentTimeMillis(); 162 BufferedReader br = null; 163 String ret = null; 164 try { 165 br = new BufferedReader(new FileReader(f)); 166 String line = null; 167 StringBuffer sb = new StringBuffer(); 168 while ((line = br.readLine()) != null) { 169 sb.append(line); 170 } 171 ret = sb.toString(); 172 } finally { 173 if (br != null) { 174 try { 175 br.close(); 176 } catch (Exception e) { 177 } 178 } 179 } 180 return ret; 181 } 182 183 184 }