java 获取目录下所有文件及文件目录
java获取文件或文件夹内最后修改时间:
/** * @param file * File * @return long */ public static long getFolderLastModifyTime(File file) { long result = 0; if (file == null || !file.exists()) { Utils.logd(TAG, "Given file not exist."); return result; } if (file.isFile()) { result = file.lastModified(); } else { File[] fileList = file.listFiles(); if (fileList == null || fileList.length == 0) { Utils.loge(TAG, "No sub files in folder:" + file.getAbsolutePath()); return result; } for (File subFile : fileList) { long lastModifiedTime = 0; if (subFile.isFile()) { lastModifiedTime = subFile.lastModified(); } else { lastModifiedTime = getFolderLastModifyTime(subFile); } if (lastModifiedTime > result) { result = lastModifiedTime; } } } return result; }
java复制文件或文件 夹
/** * @param sourceFilePath * String * @param targetFilePath * String * @return boolean */ public static boolean doCopy(String sourceFilePath, String targetFilePath) { Utils.logi(TAG, "-->doCopy() from " + sourceFilePath + " to " + targetFilePath); File sourceFile = new File(sourceFilePath); if (null == sourceFile || !sourceFile.exists()) { Utils.logw(TAG, "The sourceFilePath = " + sourceFilePath + " is not existes, do copy failed!"); return false; } // Get all files and sub directories under the current directory File[] files = sourceFile.listFiles(); if (null == files) { // Current file is not a directory String tagLogPath = sourceFile.getAbsolutePath(); return copyFile(tagLogPath, targetFilePath); } else { // Current file is a directory File targetFile = new File(targetFilePath); if (!targetFile.exists()) { targetFile.mkdirs(); } for (File subFile : files) { doCopy(subFile.getAbsolutePath(), targetFilePath + File.separator + subFile.getName()); } } return true; } private static final int COPY_BUFFER_SIZE = 1024; private static boolean copyFile(String sourceFilePath, String targetFilePath) { Utils.logi(TAG, "-->copyFile() from " + sourceFilePath + " to " + targetFilePath); File sourceFile = new File(sourceFilePath); if (!sourceFile.exists()) { Utils.logw(TAG, "The sourceFilePath = " + sourceFilePath + " is not existes, do copy failed!"); return false; } File targetFile = new File(targetFilePath); if (targetFile.exists()) { targetFile.delete(); } FileInputStream fis = null; FileOutputStream fos = null; try { fis = new FileInputStream(sourceFile); File parentFile = targetFile.getParentFile(); if (!parentFile.exists()) { parentFile.mkdirs(); } LogFileManager.createNewFile(targetFile); fos = LogFileManager.getFileOutputStream(targetFile); if (fos == null) { return false; } byte[] temp = new byte[COPY_BUFFER_SIZE]; int len; while ((len = fis.read(temp)) != -1) { fos.write(temp, 0, len); } fos.flush(); } catch (FileNotFoundException e) { e.printStackTrace(); return false; } catch (IOException e) { e.printStackTrace(); return false; } finally { try { if (fos != null) { fos.close(); } if (fis != null) { fis.close(); } } catch (IOException e) { e.printStackTrace(); } } return true; }
java获取文件或文件夹的大小
/** * Get file or folder size of input filePath. * * @param filePath the path of file * @return filePath size */ public static long getFileSize(String filePath) { long size = 0; if (filePath == null) { return 0; } File fileRoot = new File(filePath); if (fileRoot == null || !fileRoot.exists()) { return 0; } if (!fileRoot.isDirectory()) { size = fileRoot.length(); } else { File[] files = fileRoot.listFiles(); // why get a null here ?? maybe caused by permission denied if (files == null || files.length == 0) { Utils.logv(TAG, "Loop folder [" + filePath + "] get a null/empty list"); return 0; } for (File file : files) { if (file == null) { continue; } size += getFileSize(file.getAbsolutePath()); } } return size; }
java判断文件是否存在及是否有内容
public static boolean isFileExistOrNotEmpty(String filePath) { try { File f = new File(filePath); if (!f.exists() || f.length() == 0) { return false; } } catch (Exception e) { return false; } return true; }
java 获取目录下所有文件及文件目录,
public static List<File> getAllFiles(File sourceFile, boolean containFolder) { Stack<File> dirStack = new Stack<File>(); List<File> allFile = new LinkedList<File>(); if(!sourceFile.exists()) { Log.e(TAG, "file: " + sourceFile + " does not exist"); return allFile; } if (sourceFile.isDirectory()) { dirStack.add(sourceFile); } else { allFile.add(sourceFile); } while(!dirStack.empty()) { File file = dirStack.pop(); if(containFolder) { allFile.add(file); } if (file != null) { File fileArray[] = file.listFiles(); if(fileArray != null){ for(File f : fileArray ) { if(f.isDirectory()) { dirStack.push(f); } else { allFile.add(f); } } } } } return allFile; }
java压缩文件或文件夹
/** * @param sourceFilePath String * @param targetFilePath String * @return boolean */ public static boolean doZip(String sourceFilePath, String targetFilePath) { Utils.logi(TAG, "-->doZip from " + sourceFilePath + " to " + targetFilePath); File sourceFile = new File(sourceFilePath); if (!sourceFile.exists()) { Utils.logw(TAG, "The sourceFilePath = " + sourceFilePath + " is not existes, do zip failed!"); return false; } File targetFile = new File(targetFilePath); if (targetFile.exists()) { LogFileManager.delete(targetFile); } ZipOutputStream outZip = null; FileOutputStream fileOutputStream = null; try { fileOutputStream = LogFileManager.getFileOutputStream(new File(targetFilePath)); if (fileOutputStream == null) { return false; } outZip = new ZipOutputStream(fileOutputStream); zipFile(sourceFilePath, "", outZip); outZip.flush(); outZip.finish(); fileOutputStream.close(); outZip.close(); } catch (FileNotFoundException e) { e.printStackTrace(); return false; } catch (IOException e) { e.printStackTrace(); return false; } finally { try { if (fileOutputStream != null) { fileOutputStream.close(); } if (outZip != null) { outZip.close(); } } catch (IOException e) { e.printStackTrace(); } } return true; } private static final int ZIP_BUFFER_SIZE = 100 * 1024; private static boolean zipFile(String srcRootPath, String fileRelativePath, ZipOutputStream zout) { Utils.logd(TAG, "zipFile(), srcRootPath=" + srcRootPath + ", fileRelativePath = " + fileRelativePath); boolean result = false; File file = new File(srcRootPath); if (fileRelativePath == null || fileRelativePath.isEmpty()) { fileRelativePath = file.getName(); } if (file.exists()) { if (file.isFile()) { FileInputStream in = null; try { in = new FileInputStream(file); ZipEntry entry = new ZipEntry(fileRelativePath); zout.putNextEntry(entry); int len = 0; byte[] buffer = new byte[ZIP_BUFFER_SIZE]; while ((len = in.read(buffer)) > -1) { zout.write(buffer, 0, len); } zout.closeEntry(); zout.flush(); result = true; } catch (FileNotFoundException e) { Utils.loge(TAG, "FileNotFoundException", e); } catch (IOException e) { Utils.loge(TAG, "IOException", e); } finally { if (in != null) { try { in.close(); } catch (IOException e) { e.printStackTrace(); } } } return result; } else { result = true; String[] fileList = file.list(); if (fileList == null) { return false; } if (fileList.length <= 0) { ZipEntry entry = new ZipEntry(fileRelativePath + File.separator); try { zout.putNextEntry(entry); zout.closeEntry(); } catch (IOException e) { e.printStackTrace(); return false; } } for (String subFileName : fileList) { String newRelativePath = fileRelativePath.isEmpty() ? subFileName : (fileRelativePath + File.separator + subFileName); if (!zipFile(srcRootPath + File.separator + subFileName, newRelativePath, zout)) { result = false; Utils.loge(TAG, "File [" + subFileName + "] zip failed"); } } return result; } } else { Utils.loge(TAG, "File [" + file.getPath() + "] does not exitst"); return false; } }
java 删除文件夹及文件夹所有文件与目录
public static boolean deleteContentsAndDir(File dir) { if (deleteContents(dir)) { return dir.delete(); } else { return false; } } public static boolean deleteContents(File dir) { File[] files = dir.listFiles(); boolean success = true; if (files != null) { for (File file : files) { if (file.isDirectory()) { success &= deleteContents(file); } if (!file.delete()) { Log.i("androidodm", "Failed to delete " + file); success = false; } } } return success; }
java 删除某个时间前的文件 可以删除指定文件数量
public static boolean deleteOlderFiles(File dir, int minCount, long minAgeMs) { if (minCount < 0 || minAgeMs < 0) { throw new IllegalArgumentException("Constraints must be positive or 0"); } final File[] files = dir.listFiles(); if (files == null) return false; // Sort with newest files first Arrays.sort(files, new Comparator<File>() { @Override public int compare(File lhs, File rhs) { return Long.compare(rhs.lastModified(), lhs.lastModified()); } }); // Keep at least minCount files boolean deleted = false; for (int i = minCount; i < files.length; i++) { final File file = files[i]; // Keep files newer than minAgeMs final long age = System.currentTimeMillis() - file.lastModified(); if (age > minAgeMs) { if (file.delete()) { Log.d(TAG, "Deleted old file " + file); deleted = true; } } } return deleted; }
java 删除文件目录
public static void deleteAll(File target) { if (target.isDirectory()) { for (File child : target.listFiles()) { deleteAll(child); } } target.delete(); }
java 读取文件的最后一行内容
public static String getLastLine(String filePath){ String res = ""; File file = new File(filePath); if(!file.exists()){ return res; } RandomAccessFile raf = null; try { raf = new RandomAccessFile(file,"r"); long len = raf.length(); if(len == 0L){ return res; } long pos = len -1; while(pos > 0){ pos --; raf.seek(pos); if(raf.readByte() == '\n'){ break; } } if(pos == 0){ raf.seek(0); } byte[] bytes = new byte[(int)(len - pos)]; raf.read(bytes); res = new String(bytes); } catch (IOException e) { e.printStackTrace(); }finally { try { if(raf != null){ raf.close(); raf = null; } } catch (IOException e) { e.printStackTrace(); } } return res; }
java 保存文件
public static boolean writeFile(String filePath, String content) { boolean res = true; File file = new File(filePath); File dir = new File(file.getParent()); if (!dir.exists()) dir.mkdirs(); try { if (!file.exists()) { file.createNewFile(); } else { file.delete(); file.createNewFile(); } FileWriter mFileWriter = new FileWriter(file, false); mFileWriter.write(content); mFileWriter.close(); } catch (IOException e) { res = false; } return res; }
java 读文件
private int readNodeValue(String file,int defaultValue){ int vales = defaultValue; try{ BufferedReader bufferedread = new BufferedReader(new FileReader(filepath)); value = Interger.parseInt(bufferedread.readLine(),10) bufferedread.close(); }catch(Exception e){ e.getMessage(); } return value; }
java 保存文件
public static long readFileToSaveNewFile(FileInputStream fis, String destFilePath) throws Exception { if (fis == null || destFilePath == null) return -1; long totalLen = 0; BufferedInputStream bin = null; BufferedOutputStream bout = null; File destFile = new File(destFilePath); if (!destFile.exists()) { destFile.createNewFile(); } FileOutputStream fos = new FileOutputStream(destFile); try { try { bin = new BufferedInputStream(fis, 1024); bout = new BufferedOutputStream(fos, 1024); byte[] buffer = new byte[1024]; int len = 0; while ((len = bin.read(buffer)) > 0) { bout.write(buffer, 0, len); totalLen += len; } } finally { if (null != bin) { bin.close(); } if (null != bout) { bout.close(); } if(null != fos) { fos.close(); } } } catch (Exception e) { e.printStackTrace(); } return totalLen; }
JAVA File对文件内容的操作:
java IO文件操作
版权声明:如无特殊标注,文章均为本站原创,转载时请以链接形式注明文章出处。
评论