Java 7如何操纵文件属性

简介: 版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/17252977 Java 7如何操纵文件属性作者:chszs,转载需注明。
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/17252977

Java 7如何操纵文件属性

作者:chszs,转载需注明。博客主页:http://blog.csdn.net/chszs

准备写点基础性的文章,Java 7已经出来很长一段时间了,但是很多Java程序员仍然停留在早期的Java 5或Java 6的基础上,对Java 7的新特性从未加以使用。本文介绍如何利用Java 7的NIO包读取文件属性以及修改文件属性。详情如下:

1、读取文件属性

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.logging.Level;
import java.util.logging.Logger;

public class ReadFileAttribute1 {
	public static void main(String[] args){
		Path filePath = Paths.get("d:\\test.txt");
		try{
			BasicFileAttributes ra = Files.readAttributes(filePath, BasicFileAttributes.class);
			System.out.println("CREATION TIME:" + ra.creationTime());
			System.out.println("LAST ACCESS TIME:" + ra.lastAccessTime());
			System.out.println("FILE SIZE:" + ra.size());
			System.out.println("LAST MODIFIED:" + ra.lastModifiedTime());
			System.out.println("IS SYSBOLIC LINK:" + ra.isSymbolicLink());
			System.out.println("IS FOLDER:" + ra.isDirectory());
			System.out.println("IS FILE:" + ra.isRegularFile());
			
		}catch(IOException e){
			Logger.getLogger(ReadFileAttribute1.class.getName()).log(Level.SEVERE, null, e);
		}
	}
}
输出:
CREATION TIME:2013-04-09T05:45:30.685152Z
LAST ACCESS TIME:2013-08-12T00:30:43.19369Z
FILE SIZE:32
LAST MODIFIED:2013-12-10T13:35:08.438828Z
IS SYSBOLIC LINK:false
IS FOLDER:false
IS FILE:true

2、另一种读取文件属性的方法

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.logging.Level;
import java.util.logging.Logger;

public class ReadFileAttribute2 {
	public static void main(String[] args){
		Path fp = Paths.get("D:\\test.txt");
		try{
			Files.getAttribute(fp, "basic:size");
			System.out.println("CREATION TIME:" + Files.getAttribute(fp, "basic:creationTime").toString());
			System.out.println("LAST ACCESS TIME:" + Files.getAttribute(fp, "basic:lastAccessTime").toString());
			System.out.println("FILE SIZE:" + Files.getAttribute(fp, "basic:size").toString());
			System.out.println("LAST MODIFIED:" + Files.getAttribute(fp, "basic:lastModifiedTime").toString());
			System.out.println("IS SYSBOLIC LINK:" + Files.getAttribute(fp, "basic:isSymbolicLink").toString());
			System.out.println("IS FOLDER:" + Files.getAttribute(fp, "basic:isDirectory").toString());
			System.out.println("IS FILE:" + Files.getAttribute(fp, "basic:isRegularFile").toString());
		}catch(IOException e){
			Logger.getLogger(ReadFileAttribute2.class.getName()).log(Level.SEVERE, null, e);
		}
		
	}
}

输出:CREATION TIME:2013-04-09T05:45:30.685152Z
LAST ACCESS TIME:2013-08-12T00:30:43.19369Z
FILE SIZE:32
LAST MODIFIED:2013-12-10T13:35:08.438828Z
IS SYSBOLIC LINK:false
IS FOLDER:false
IS FILE:true

3、修改文件属性

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.attribute.BasicFileAttributes;
import java.nio.file.attribute.FileTime;
import java.util.logging.Level;
import java.util.logging.Logger;

public class UpdateFileAttribute1 {
	public static void main(String[] args){
		Path fp = Paths.get("D:\\test.txt");
		try{
			BasicFileAttributes ra = Files.readAttributes(fp, BasicFileAttributes.class);
			long currentTimeMillis = System.currentTimeMillis();
			FileTime fileTime = FileTime.fromMillis(currentTimeMillis);
			Files.setAttribute(fp, "basic:creationTime", fileTime);
			FileTime creationTime = (FileTime)Files.getAttribute(fp, "basic:creationTime");
			System.out.println("NEW CREATION TIME:" + creationTime.toString());
			System.out.println("OLD CREATION TIME:" + ra.creationTime());
		}catch(IOException e){
			Logger.getLogger(UpdateFileAttribute1.class.getName()).log(Level.SEVERE, null, e);
		}
	}
}
输出:

NEW CREATION TIME:2013-12-10T15:04:26.159Z
OLD CREATION TIME:2013-04-09T05:45:30.685152Z

4、还可以修改文件别的属性

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.attribute.BasicFileAttributes;
import java.nio.file.attribute.FileTime;
import java.util.logging.Level;
import java.util.logging.Logger;

public class UpdateFileAttribute2 {
	public static void main(String[] args){
		Path fp = Paths.get("D:\\test.txt");
		try{
			BasicFileAttributes ra = Files.readAttributes(fp, BasicFileAttributes.class);
			long currentTimeMillis = System.currentTimeMillis();
			FileTime fileTime = FileTime.fromMillis(currentTimeMillis);
			Files.setAttribute(fp, "basic:lastAccessTime", fileTime);
			FileTime creationTime = (FileTime)Files.getAttribute(fp, "basic:lastAccessTime");
			System.out.println("NEW LAST-ACCESS-TIME:" + creationTime.toString());
			System.out.println("OLD LAST-ACCESS-TIME:" + ra.lastAccessTime());
		}catch(IOException e){
			Logger.getLogger(UpdateFileAttribute2.class.getName()).log(Level.SEVERE, null, e);
		}
	}
}
输出:

NEW LAST-ACCESS-TIME:2013-12-10T15:07:46.261Z
OLD LAST-ACCESS-TIME:2013-08-12T00:30:43.19369Z

5、另一种修改文件属性的方法

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.attribute.BasicFileAttributes;
import java.nio.file.attribute.FileTime;
import java.util.logging.Level;
import java.util.logging.Logger;

public class UpdateFileAttribute3 {
	public static void main(String[] args){
		Path fp = Paths.get("D:\\test.txt");
		try{
			BasicFileAttributes ra = Files.readAttributes(fp, BasicFileAttributes.class);
			long currentTimeMillis = System.currentTimeMillis();
			FileTime fileTime = FileTime.fromMillis(currentTimeMillis);
			Files.setLastModifiedTime(fp, fileTime);
			FileTime time = (FileTime)Files.getAttribute(fp, "basic:lastModifiedTime");
			System.out.println("NEW LAST-MODIFIED-TIME:" + time.toString());
			System.out.println("OLD LAST-MODIFIED-TIME:" + ra.lastModifiedTime());
		}catch(IOException e){
			Logger.getLogger(UpdateFileAttribute3.class.getName()).log(Level.SEVERE, null, e);
		}
	}
}
输出:
NEW LAST-MODIFIED-TIME:2013-12-10T15:13:07.134Z
OLD LAST-MODIFIED-TIME:2013-12-10T13:35:08.438828Z


目录
相关文章
|
19天前
|
Web App开发 Java 测试技术
《手把手教你》系列技巧篇(五十六)-java+ selenium自动化测试-下载文件-上篇(详细教程)
【5月更文挑战第20天】本文介绍了自动化测试中如何实现无弹窗下载文件,主要针对Firefox浏览器。作者指出,通常的下载操作包括点击下载按钮,但这里讨论的是避免下载弹窗直接保存文件的方法。文章详细讲解了通过设置Firefox参数(如`browser.download.dir`、`browser.helperApps.neverAsk.saveToDisk`等)来实现这一功能,并给出了Java Selenium的示例代码,展示了如何创建FirefoxProfile并进行相关设置,以及如何启动浏览器和执行下载操作。
32 0
《手把手教你》系列技巧篇(五十六)-java+ selenium自动化测试-下载文件-上篇(详细教程)
|
1天前
|
Java Maven
Java 怎样从 excel 中读取文件、写入文件
Java 怎样从 excel 中读取文件、写入文件
7 0
|
2天前
|
JavaScript Java Android开发
在cmd中运行javac编译java文件报错: 编码GBK的不可映射字符、 非法字符: \65279
在cmd中运行javac编译java文件报错: 编码GBK的不可映射字符、 非法字符: \65279
11 1
|
2天前
|
Java
Java读取txt文件和写入txt文件-多种方法-java读写文件-java读写
Java读取txt文件和写入txt文件-多种方法-java读写文件-java读写
12 0
|
2天前
|
网络协议 JavaScript 前端开发
Java一分钟之-GraalVM Native Image:构建原生可执行文件
【6月更文挑战第13天】GraalVM Native Image是Java开发的创新技术,它将应用编译成独立的原生可执行文件,实现快速启动和低内存消耗,对微服务、桌面应用和嵌入式系统有重大影响。本文讨论了如何使用Native Image,包括常见挑战如反射与动态类加载、静态初始化问题和依赖冲突,并提供了解决方案和代码示例。通过合理规划和利用GraalVM工具,开发者可以克服这些问题,充分利用Native Image提升应用性能。
27 5
|
2天前
|
IDE 数据可视化 Java
Java基础6-Java文件和Java包结构和常用的jar包(二)
Java基础6-Java文件和Java包结构和常用的jar包(二)
9 0
|
2天前
|
Java Unix 编译器
Java基础6-Java文件和Java包结构和常用的jar包(一)
Java基础6-Java文件和Java包结构和常用的jar包(一)
12 0
|
5天前
|
存储 Java 测试技术
《手把手教你》系列技巧篇(六十九)-java+ selenium自动化测试 - 读取csv文件(详细教程)
【6月更文挑战第10天】本文介绍了如何在Java中读取CSV文件。首先解释了CSV是逗号分隔值的文本文件,常用于数据交换。接着,在项目实战部分,详细说明了如何通过下载并引入opencsv库来读取CSV文件:包括下载jar包、添加到Eclipse项目、创建CSV文件、编写Java代码读取文件内容,并展示了代码执行后的输出结果。文章以一个简单的代码示例展示了如何使用opencsv读取CSV文件中的数据。
10 0
|
6天前
|
Java 测试技术 Apache
《手把手教你》系列技巧篇(六十八)-java+ selenium自动化测试 - 读写excel文件 - 下篇(详细教程)
【6月更文挑战第9天】本文介绍了如何使用Java处理Excel文件中的不同数据类型,包括日期、数字、布尔值和标签(常规字符串)。文章提供了两个示例,分别使用JXL库和Apache POI库来读取Excel文件。
9 1
|
6天前
|
XML Java 测试技术
《手把手教你》系列技巧篇(六十七)-java+ selenium自动化测试 - 读写excel文件 - 中篇(详细教程)
【6月更文挑战第8天】本文介绍了Java中操作Excel的工具,包括POI和JXL。POI支持处理Office 2003及以下的OLE2格式(.xls)和2007以上的OOXML格式(.xlsx)。而JXL只能处理2003版本的Excel文件。文章详细讲解了如何下载和使用JXL库,并给出了一个简单的Java代码示例,展示如何读取2003版Excel文件中的数据。在实际项目中,由于JXL对新版本Excel的支持限制,通常推荐使用POI。
22 5