Java中File类的常用操作及项目中的使用

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;
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值