Java读写txt文件,easyExcel读写excel文件

读txt文件

import java.io.FileReader;
import java.io.IOException;
import java.io.BufferedReader;

public class ReadTextFile {
  public static void main(String[] args) {
    try {
      File dir = new File("D:\\codes\\河南省公告\\result");
      File[] files = dir.listFiles();
      //模拟要写入excel的数据
      List<ExcelDTO> list = new ArrayList<>();
      for (File f : files) {
          FileReader fr = new FileReader(f.getPath());
          BufferedReader br = new BufferedReader(fr);
          String line;
          while ((line = br.readLine()) != null) {
          	System.out.println(line);
              // todo
              }
          }

          br.close();
          fr.close();
      }
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

新版本的Java提供了NIO,对于JDK11及以上版本,可以这样读取:

Path path = Paths.get("/Users/zhangchao/Downloads/demo.txt");
String data = Files.readString(path);
System.out.println(data);

写txt文件

BufferedWriter类是Writer的子类,它为了提高效率,加入了缓冲技术,将字符读取对象作为参数。
缓冲区的出现是为了提高流的操作效率而出现的,所以在创建缓冲区之前,必须先要有流对象。
为了提高字符写入流的效率,加入的缓冲技术,在对象里面封装了数组,只要将需要被提高效率的流对象作为参数传递给缓冲区的构造函数即可,记住只要用到缓冲区就要刷新。关闭缓冲区,其实关闭缓冲区就是在关闭缓冲区中的流对象。
BufferedWriter类将一个常量值作为默认缓冲区的大小,它同时也可以通过构造函数来指定大小。

提供了newLine()方法,它使用自己的行分隔符概念,它是由系统自带的属性line.separator定义,并非使用换行符来终止行.

writer会立即将其输出发送到基础字符或字节流,所以在使用BufferedWriter来包装writer的子类可以提高输出的效率

在使用bufferedWriter类的write()方法时,数据并没有立刻写入输入流,而是首先进入缓存区中,如果想立刻将缓存区中的数据写入输出流,一定要调用flush()方法。
为了提高字符写入流的效率,加入的缓冲技术,在对象里面封装了数组,只要将需要被提高效率的流对象作为参数传递给缓冲区的构造函数即可,记住只要用到缓冲区就要刷新。关闭缓冲区,其实关闭缓冲区就是在关闭缓冲区中的流对象。

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

public class BufferedWriterDemo {

    public static void main(String[] args) throws IOException {
        FileWriter fw = new FileWriter("./buff.txt");
        BufferedWriter bw = new BufferedWriter(fw);

        for (int x = 1 ; x<9;x++){
            bw.write("abcd" + x);
            bw.newLine();
            bw.flush();
        }
        
        float[] obj_incre = new float[3];
        obj_incre[0]  = 1.0f;
        obj_incre[1]  = 2.0f;
        obj_incre[2]  = 3.0f;
        
        String str = null;
        StringBuilder str_result = new StringBuilder();

        for (int i = 0; i < obj_incre.length; i++) {
            str =  Float.toString(obj_incre[i]) + " ";
            str_result.append(str);
        }
        bw.write(String.valueOf(str_result));
        bw.newLine();
        bw.flush();
        
        bw.close();
    }
}

写excel

pom引入easyExcel依赖

<dependencies>
    <!-- https://mvnrepository.com/artifact/com.alibaba/easyexcel -->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>easyexcel</artifactId>
        <version>2.1.1</version>
    </dependency>
</dependencies>

创建实体类

@Data
public class User {
    //设置表头名称
    @ExcelProperty(value = "用户编号")
    private int id;

    //设置表头名称
    @ExcelProperty(value = "用户名称")
    private String name;
}

写操作

public class TestWrite {
    public static void main(String[] args) {
        //设置文件名称和路径
        String fileName="I:\\temp\\ggkt\\test.xlsx";
        //调用方法
        EasyExcel.write(fileName,User.class)
                .sheet("写操作")
                .doWrite(data());
    }

    //循环设置要添加的数据,最终封装到list集合中
    private static List<User> data() {
        List<User> list = new ArrayList<User>();
        for (int i = 0; i < 10; i++) {
            User data = new User();
            data.setId(i);
            data.setName("lucy"+i);
            list.add(data);
        }
        return list;
    }
}

读操作
创建实体类

@Data
public class User {
    //设置表头名称
    //设置列对应的属性
    @ExcelProperty(value = "用户编号",index = 0)
    private int id;

    //设置表头名称
    //设置列对应的属性
    @ExcelProperty(value = "用户名称",index = 1)
    private String name;
}

@Test
    public void contextLoads() {
        File originfile = new File("D:\\codes\\huayu\\text_files\\招中标公告0725.xlsx");
        //默认读取Excel文件的第一个sheet
        List<User> originList = EasyExcel.read(originfile).head(User.class).sheet().doReadSync();

        HashMap<Integer, User> originMap = new HashMap<>();
        for (User user : originList) {
            // todo
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
EasyExcel是一款基于Java的开源工具,用于读取写入Excel文件。它提供了简单易用的API,可以方便地进行Excel文件读写操作。 使用EasyExcel读取Excel文件非常简单,只需按照以下步骤进行操作: 1. 引入EasyExcel的依赖包。 2. 创建一个Java类,作为数据模型,用于存储读取到的Excel数据。 3. 使用EasyExcel提供的API,打开Excel文件读取数据。 4. 将读取到的数据存储到数据模型。 5. 关闭Excel文件。 以下是使用EasyExcel读取Excel文件的示例代码: ```java // 引入EasyExcel的依赖包 import com.alibaba.excel.EasyExcel; // 创建数据模型类 public class ExcelData { private String name; private int age; // 其他属性... // getter和setter方法... } // 读取Excel文件 public class ReadExcel { public static void main(String[] args) { // Excel文件路径 String filePath = "path/to/excel/file.xlsx"; // 使用EasyExcel提供的API,打开Excel文件读取数据 EasyExcel.read(filePath, ExcelData.class, new ExcelDataListener()).sheet().doRead(); } } // 自定义监听器类,用于处理读取到的数据 public class ExcelDataListener extends AnalysisEventListener<ExcelData> { // 重写父类的方法,处理每一行读取到的数据 @Override public void invoke(ExcelData data, AnalysisContext context) { // 将读取到的数据存储到数据模型,可以进行自定义操作 System.out.println("Name: " + data.getName()); System.out.println("Age: " + data.getAge()); // 其他操作... } // 重写父类的方法,读取完成后的操作 @Override public void doAfterAllAnalysed(AnalysisContext context) { // 关闭Excel文件等资源 } } ``` 以上就是使用EasyExcel读取Excel文件的简单介绍和示例代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值