Java中File类常用方法
public class File_Demo {
/**
* Java中File类的使用
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//创建文件目录,路径可以是绝对路径和相对路径,分隔符采用\\或者/
// File file = new File("d:\\test\\java.txt"); //绝对路径创建File类
// File file = new File("d:/test/java.txt"); //相对路径下创建文件
// File file = new File("java.txt"); //文件创建失败
File f1 = new File("d:/test/文件目录");
System.out.println(f1);
// 改名操作renameTo
f1.renameTo(new File("d:/test/文件目录2"));
System.out.println(System.getProperty("user.dir")); // 用户空间
//测试File类的各个方法
File f2 = new File("gg.txt");
// f2.createNewFile();
System.out.println("File是否存在:"+f2.exists());
System.out.println("File是否是目录:"+f2.isDirectory());
System.out.println("File是否是文件:"+f2.isFile());
System.out.println("File最后修改时间:"+new Date(f2.lastModified()));
System.out.println("File的大小:"+f2.length());
System.out.println("File的文件名:"+f2.getName());
System.out.println("File的目录路径:"+f2.getAbsolutePath());
//mkdir和mkdirs的却别
File f3 = new File("d:/世界/中国/上海");
// boolean flag = f3.mkdir(); //目录结构中有一个不存在,则不会创建整个目录树
boolean flag = f3.mkdirs();//目录结构中有一个不存在也没关系;创建整个目录树
System.out.println(flag);//创建失败
}
}
运行结果:
项目中遇到的File类操作
if ("07".equals(datamap.get("thirdId"))) {// 工行聚合支付
thirdfilepath = merchantaccinfomap.get("f_mem") + (String) datamap.get("accDate") + ".csv";
File thirdfile = new File(thirdfilepath);
if (!thirdfile.exists()) {
logger.info("----------------工行文件不存在--------------");
resultmap.put("returnCode", "0016");
// resultmap.put("msg", "工行文件不存在");
return resultmap;
}
List<String> thirdDetail = FileUtils.read(thirdfilepath, 1, "utf-8");// 明细数据,注意配置文件最后不要有空行
if (thirdDetail.size() <= 0) {
logger.info("----------------工行文件数据为空--------------");
resultmap.put("returnCode", "0017");
resultmap.put("msg", "工行文件数据为空");
return resultmap;
}
}
用到的FileUtils工具类中的read方法获取指定文件路径下文件的内容,“1”表示跳过一行,编码格式为utf-8;
write()方法用于写入内容。
FileUtiles工具类代码如下:
/**
*
* @param filepath
* @param index ---跳过行数
* @return
*/
public static ArrayList<String> read(String filepath, int index, String encoding) {
File file = new File(filepath);
file.setReadable(true);
file.setWritable(true);
BufferedReader br = null;
String line = "";
ArrayList<String> allString = new ArrayList<>();
try {
DataInputStream in = new DataInputStream(new FileInputStream(new File(filepath)));
br = new BufferedReader(new InputStreamReader(in, encoding));
while ((line = br.readLine()) != null) // 读取到的内容给line变量
{
// logger.info("------line------" + line);
if (index <= 0) {
allString.add(line);
} else {
index--;
}
}
} catch (Exception e) {
e.printStackTrace();
}
return allString;
}
/**
* 写文件
* 保证最后一行没有空行
* @param filepath
* @param data
* @param encoding
* @return
*/
public static boolean write(String filepath, ArrayList<String> data, String encoding) {
boolean writestatus = true;
try {
File file = new File(filepath);
// FileWriter true写到文件末尾,PrintWriter true自动清空缓存
PrintWriter printWriter = new PrintWriter(new FileWriter(file, true), true);
for (int i = 0; i < data.size(); i++) {
System.out.println(data.get(i));
if (i == data.size() - 1) {
printWriter.printf(data.get(i));
}else {
printWriter.println(data.get(i));// println换行
}
}
printWriter.close();// 记得关闭输入流
} catch (Exception e) {
writestatus = false;
}
return writestatus;
}