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如何操纵文件属性的更多相关文章

  1. Java字节码操纵框架ASM小试

    本文主要内容: ASM是什么 JVM指令 Java字节码文件 ASM编程模型 ASM示例 参考资料汇总 JVM详细指令 ASM是什么 ASM是一个Java字节码操纵框架,它能被用来动态生成类或者增强既 ...

  2. Java File类读取文件属性

     package myjavademo;import java.io.*; publicclass MyJavaDemo {     public static void main(String[]  ...

  3. java jeesite.properties配置文件属性提取

    package com.thinkgem.jeesite.common.config; import java.io.UnsupportedEncodingException; import java ...

  4. JAVA解析_操纵_JS_JAVA_JS引擎

    http://uuhorse.iteye.com/blog/1705684 http://blog.csdn.net/chinajash/article/details/1491570 http:// ...

  5. java反射 cglib asm相关资料

    有篇文章对java反射的调用的效率做了测试,写的比较好.猛击下面地址 http://www.blogjava.net/stone2083/archive/2010/09/15/332065.html ...

  6. 设置java jvm(虚拟机) 的内存在大小

    package WanWan; public class Test { /** * @param args */ public static void main(String[] args) { // ...

  7. java项目中可能会使用到的jar包解释

    一.Struts2 用的版本是struts2.3.1.1 一个简单的Struts项目所需的jar包有如下8个 1. struts2-core-2.3.1.1.jar: Struts2的核心类库. 2. ...

  8. 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 ...

  9. Java语言与C++语言的差异总结

    Java的设计者曾说过,设计这门语言的灵感主要来自于C++. 世上先有C++,然后才有Java,整个Java语言的发展历史就是一部对C++的填坑史.所以在Java语言学习过程中,将其与C++语言对比是 ...

随机推荐

  1. [转]数位dp小记

    转载自:http://blog.csdn.net/guognib/article/details/25472879 参考: http://www.cnblogs.com/jffifa/archive/ ...

  2. jquery倒计时自动跳转

    刚开始我用下面这种方法一直报错,不知是什么原因,就是多加了页面加载时调用这个方法,还请高手看到后小小留言解惑

  3. CSS长度单位及区别 em ex px pt in

    1.         css相对长度单位 Ø         em          元素的字体高度 Ø         ex           字体x的高度 Ø         px        ...

  4. Cshap 使用http发起请求.

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 using System; using System.I ...

  5. c++參数传递

    定义: 形參:指出如今Sub 和Function过程形參表中的变量名.数组名,该过程在被调用前.没有为它们分配内存.其作用是说明自变量的类型和形态以及在过程中的作用.形參能够是除定长字符串变量之外的合 ...

  6. hdu 1251 统计难题 初识map

    Problem Description Ignatius近期遇到一个难题,老师交给他非常多单词(仅仅有小写字母组成,不会有反复的单词出现),如今老师要他统计出以某个字符串为前缀的单词数量(单词本身也是 ...

  7. 解决win7 中source insight没有courier new字节的问题

    解决win7 中source insight没有courier new字节的问题  http://blog.csdn.net/season_hangzhou/article/details/18665 ...

  8. cocos2d-x中文显示:加字库

    1.如下:为了中文显示 2.如下:解决方案-加入中文字库

  9. 闲扯 Javascript 04 滚动条

    物体运动基础 让Div移动起来 offsetLeft的作用 用定时器让物体连续移动 效果原理 让ul一直向左移动 复制li innerHTML和+= 修改ul的width 滚动过界后,重设位置 判断过 ...

  10. .NET Framework 4.5新特性

    前言 .Net FrameWrok的每个版本都要他的新特性的加入,比如,NET1.1中的委托,NET2.0中的泛型,NET3.0中的Linq,.NET4.0中的动态类型,那么.NET Framewor ...