java对文件的操作

应用示例

对于文件类的操作,通常有对文件夹,和文件两种操作,创建和删除文件,写入和读取文件

File file = new File("D:/test/test/test");

//创建文件夹,可以多级目录创建
boolean mkdirs = file.mkdirs();
System.out.println(mkdirs);

//删除末级非空文件夹
boolean delete = file.delete();
System.out.println(delete);

File file1 = new File("D:/test/test/asas.text");
//创建文件
boolean newFile = file1.createNewFile();
System.out.println(newFile);

//写入数据,\n表示换行
FileWriter writer = new FileWriter(file1);
writer.write("张三");
writer.write("\n");
writer.write("李四");
writer.write("\n");
writer.write("aaaa");
writer.write("\n");
writer.write("aaaa");
writer.flush();
writer.close();

//读取数据流常用有两种方式,第一种可以进行编码格式的设置
InputStream inputStream = new FileInputStream(file1);
InputStreamReader in = new InputStreamReader(inputStream,"utf-8");
BufferedReader br = new BufferedReader(in);
String s = "";
while((s = br.readLine()) != null){
    System.out.println(s);
}

//第二种用起来比较简介
FileReader file2 = new FileReader(file1);
BufferedReader brr = new BufferedReader(file2);
String ss = "";
while((ss = brr.readLine()) != null){
    System.out.println(ss);
}

//删除文件
boolean delete1 = file1.delete();

File file3 = new File("D:/");
//返回所有文件及文件夹的名称,不会递归遍历
String[] list = file3.list();
//返回所有文件的file数组,不会递归遍历
File[] files = file3.listFiles();

//此处会进行递归遍历,查询出所有的文件及文件夹
Stream<Path> walk = Files.walk(Paths.get("D:\\test"));
List<Path> collect = walk.filter(Files::isDirectory).collect(Collectors.toList());
for (Path path : collect) {
    System.out.println(path);
}

网络请求携带文件

通常我们可以通过表单携带文件进行文件传输,在接收文件的时候,会有如下常用的操作

@PostMapping("/upload")
@ResponseBody
public String upload(MultipartFile file) throws IOException {
    //获取文件名称
    String originalFilename = file.getOriginalFilename();
    //获取输入流
    InputStream inputStream = file.getInputStream();
    //获取字节数组
    byte[] bytes = file.getBytes();
    //获取内容类型
    String contentType = file.getContentType();
    //获取上传的键名
    String name = file.getName();
    //获取文件大小
    long size = file.getSize();
    //获取资源其他的一些信息
    Resource resource = file.getResource();
    return "ok";
}

将文件输出到HttpServletRespons中

//对响应头进行基础的设置
response.setContentType("application/x-download");
String fileName = URLEncoder.encode("模板.xlsx", "UTF-8");
response.setCharacterEncoding("UTF-8");
response.addHeader("Content-Disposition", "attachment;filename=" + fileName);

//读取文件
File file = new File(path+fileName);
//将文件写入流
InputStream in = new FileInputStream(file);
//获得数组长度
int available = in.available();
//转换成字节数组
byte[] b = new byte[available];
//将流写进数组
in.read(b);
//将数组写进输出流,并刷新
ServletOutputStream out = response.getOutputStream();
out.write(b);
out.flush();

对文件的一些常用操作

//判断是否是文件夹

boolean directory = file.isDirectory();

//判断是否是文件
boolean file4 = file.isFile();

//判断此文件是否存在

boolean exists = file.exists();

//获取path文件
Path path = file.toPath();

//读取文件内容
List<String> list1 = Files.readAllLines(file.toPath());

//往文件内写入数据
Files.write(file4.toPath(),"测试数据1".getBytes());

//复制文件
Files.copy(file1.toPath(), file2.toPath());

//获取文件大小
long length = source1.length();
long size = Files.size(source1.toPath());

//文件移动
File source1 = new File("D:/test/test/bbb.txt");
File source2 = new File("D:/test/ccc.txt");
Path move = Files.move(source1.toPath(), source2.toPath());

//参数1和2通常用作文件的名称和后缀,注意这是生成了一个临时文件,在文件夹的//C:\Users\administrator\AppData\Local\Temp文件夹下可以找到,临时文件使用file.deleteOnExit()可以在推出虚拟机的时候删除,经过测试,然并卵,所以还是老老实实的使用完成使用delete进行删除比较靠谱

File file = File.createTempFile(参数1,参数2)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值