Java 7如何操纵文件属性
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
Java 7如何操纵文件属性的更多相关文章
- Java字节码操纵框架ASM小试
本文主要内容: ASM是什么 JVM指令 Java字节码文件 ASM编程模型 ASM示例 参考资料汇总 JVM详细指令 ASM是什么 ASM是一个Java字节码操纵框架,它能被用来动态生成类或者增强既 ...
- Java File类读取文件属性
package myjavademo;import java.io.*; publicclass MyJavaDemo { public static void main(String[] ...
- java jeesite.properties配置文件属性提取
package com.thinkgem.jeesite.common.config; import java.io.UnsupportedEncodingException; import java ...
- JAVA解析_操纵_JS_JAVA_JS引擎
http://uuhorse.iteye.com/blog/1705684 http://blog.csdn.net/chinajash/article/details/1491570 http:// ...
- java反射 cglib asm相关资料
有篇文章对java反射的调用的效率做了测试,写的比较好.猛击下面地址 http://www.blogjava.net/stone2083/archive/2010/09/15/332065.html ...
- 设置java jvm(虚拟机) 的内存在大小
package WanWan; public class Test { /** * @param args */ public static void main(String[] args) { // ...
- java项目中可能会使用到的jar包解释
一.Struts2 用的版本是struts2.3.1.1 一个简单的Struts项目所需的jar包有如下8个 1. struts2-core-2.3.1.1.jar: Struts2的核心类库. 2. ...
- Java常用jar包用途
Java常用jar包用途: USAGE INDEX JAR NAME USAGE 1 ASM asm-2.2.3.jar ASM字节码库 2 ASM asm-commons-2.2.3.jar ASM ...
- Java语言与C++语言的差异总结
Java的设计者曾说过,设计这门语言的灵感主要来自于C++. 世上先有C++,然后才有Java,整个Java语言的发展历史就是一部对C++的填坑史.所以在Java语言学习过程中,将其与C++语言对比是 ...
随机推荐
- 以前学习cisco ccna 课程的时候做的笔记
由于学习的专业是计算机网络技术,可是在上学的时候,并没有学习到多少网络知识,所以为了对得起学的专业,在06年工作的时候,在哈工大银河教育报了个ccna的班,两个星期的课程,每天上那么几个小时. 结果依 ...
- 交换机Trunk端口配置
本文为转发,简单明了,我喜欢. Trunk端口的配置步骤如下: 一 组网需求: 1.SwitchA与SwitchB用trunk互连,相同VLAN的PC之间可以互访,不同VLAN的PC之间禁止互访: 2 ...
- 演练2-2:Guestbook示例应用程序
为使Guestbook应用程序有用,我们需要为用户提供一些提交数据的方式,将这些数据存储起来,以便稍后进行查看.为了达到这一目标,我们打算对应用程序添加一个数据库,将其作为该留言簿的后台存储库. 1. ...
- 从头学Qt Quick系列
http://www.cnblogs.com/csulennon/category/686605.html
- Robot Framework与Web界面自动化测试学习笔记:定位到新窗口
在页面操作中,有时会需要打开新的窗口(新的网页不在当前窗口显示,而是在新的tab页显示), 比如利用 window.open("newurl") 或者 <a href=& ...
- PowerMock mock私有方法
import java.util.Random; public class CodeWithPrivateMethod { public void meaningfulPublicApi() { if ...
- hdu 4771 Stealing Harry Potter's Precious(bfs)
题目链接:hdu 4771 Stealing Harry Potter's Precious 题目大意:在一个N*M的银行里,贼的位置在'@',如今给出n个宝物的位置.如今贼要将全部的宝物拿到手.问最 ...
- [置顶] think in java interview-高级开发人员面试宝典(八)
面经出了7套,收到许多读者的Email,有许多人说了,这些基础知识是不是为了后面进一步的”通向架构师的道路“做准备的? 对的,你们没有猜错,就是这样的,我一直在酝酿后面的”通向架构师的道路“如何开章. ...
- 黑马day16 jquery&层次选择器
假设想通过DOM元素之间的层次关系来获取特定元素,比如后代元素,子元素,相邻元素,兄弟元素等,则须要使用层次选择器. 1 .ancestor descendant 使用方法: $("form ...
- while和do while习题
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 练习 { ...