File 简述
- public class File extends Object implements Serializable, Comparable<File>:文件和目录路径名的抽象表示形式。
- File 类的对象可以表示文件和目录,
- File 对象并不能直接对文件进行读/写操作,只能查看文件的属性,读写操作可以使用IO流
- JDK7 开始已经使用Files来替代了
构造方法摘要
File pathname
- public File(String pathname):通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
- 如果给定字符串是空字符串,那么结果是空抽象路径名。
- 参数:pathname - 路径名字符串,可以是绝对或者相对路径
- 抛出: NullPointerException - 如果 pathname 参数为 null
方法摘要
exists
- public boolean exists():测试此抽象路径名表示的文件或目录是否存在。
- 返回:当且仅当此抽象路径名表示的文件或目录存在时,返回 true;否则返回 false
delete
- public boolean delete()删除此抽象路径名表示的文件或目录。如果此路径名表示一个目录,则该目录必须为空才能删除。
- 返回:当且仅当成功删除文件或目录时,返回 true;否则返回 false
- 可以使用apache的FileUtils强删整个目录,不过里面有多少子目录,都会删除
getName
- public String getName():返回由此抽象路径名表示的文件或目录的名称。
- 该名称是路径名名称序列中的最后一个名称,如果路径名名称序列为空,则返回空字符串。
- 如File表示的是"E:\\Study_Note\\Java_SE\\Class.docx",则getName返回的
getAbsolutePath
- public String getAbsolutePath():返回此抽象路径名的绝对路径名字符串。
- 如果此抽象路径名已经是绝对路径名,则返回该路径名字符串,这与 getPath() 方法一样;如果此抽象路径名是相对路径,则会转为绝对路径;如果此抽象路径名是空抽象路径名,则返回当前用户目录的路径名字符串。
isFile
- public boolean isFile():测试此抽象路径名表示的文件是否是一个标准文件。
- 如果该文件不是一个目录,并且满足其他与系统有关的标准,那么该文件是标准 文件。由 Java 应用程序创建的所有非目录文件一定是标准文件。
- 返回:当且仅当此抽象路径名表示的文件存在且 是一个标准文件时,返回 true;否则返回 false
- 如果File表示的文件或目录根本不存在,则返回false
package com.lct.utils;
import com.sun.jna.platform.FileUtils;
import org.apache.commons.lang3.time.DateFormatUtils;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* Created by Administrator on 2018/6/28 0028.
*/
public class LogWmxUtils {
/**
* 写入日志
*
* @param message
*/
public static final void writeLine(String message) {
try {
if (message != null && !"".equals(message)) {
File logDir = new File("logs");
if (!logDir.exists()) {
logDir.mkdirs();
}
SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String logName = simpleDateFormat1.format(new Date());
String messageHead = simpleDateFormat2.format(new Date());
File logFile = new File(logDir, logName + ".log");
FileWriter fileWriter = new FileWriter(logFile, true);
fileWriter.write(messageHead + ":" + message + "\r\n");
fileWriter.flush();
fileWriter.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 清理日志目录下的日志文件
*/
public static final void clearLogs() {
/**写日志的时候采用相对目录,则删除的时候同样如此*/
File logDirFile = new File("logs");
/**日志目录存在时,才开始清理*/
if (logDirFile.exists()) {
/**写日志时,约定日志文件格式为:"yyyy-MM-dd.log"*/
String todayLogFileName = DateFormatUtils.format(new Date(), "yyyy-MM-dd") + ".log";
File[] fileArray = logDirFile.listFiles();
if (fileArray != null && fileArray.length > 0) {
String eachLogfileName = "";
for (File file : fileArray) {
/**循环处理日志目录下的文件,如果日志文件名字与今天日志名字不一致,则删除掉
* 即只保留今天的日志文件
* 注意日志目录下面如果有子目录,则不做处理*/
eachLogfileName = file.getName();
if (!todayLogFileName.equals(eachLogfileName) && file.isFile()) {
file.delete();
}
}
LogWmxUtils.writeLine("Clear redundant log files under :" + logDirFile.getAbsolutePath());
}
}
}
public static void main(String[] args) {
writeLine("你好,中国!");
clearLogs();
}
}