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. ListView判断滑动底部

    通过实现OnScrollListener这个接口,然后复写 public abstract void onScroll (AbsListView view, int firstVisibleItem, ...

  2. 使用Atlas实现MySQL读写分离+MySQL-(Master-Slave)配置

    参考博文: MySQL-(Master-Slave)配置  本人按照博友北在北方的配置已成功  我使用的是 mysql5.6.27版本. 使用Atlas实现MySQL读写分离 数据切分——Atlas读 ...

  3. CodeForces 260A Adding Digits

    这道题目的意思是给你提供a, b, n 三个数 a为 输入的数字 ,你需要在a后面加n次 ,每次可以加0-9 但要保证每次加上去的那个数字能被b整除 不过数据规模有点大,用搜索会MLE(即使开了个开栈 ...

  4. Verilog中的标点

    在Verilog中有时候会误用的上引号 1,define 中的 `define INITIAL  0 这个单引号用的是键盘左上角的那个单引号,其实就是一个小撇. 2,4'd0 这个 用的是才是叫真正的 ...

  5. JAVA学习中好网站 - -

    http://www.54bk.com 我是博客 http://www.java-cn.com java中文网 http://java.sun.com sun官方网站 http://www.comej ...

  6. 区间重合判断(pojg校门外的树)

    pojg:http://poj.grids.cn/practice/2808 解法1:以空间换时间: #include<stdio.h> #include<string.h> ...

  7. Android自定义组合控件:UIScrollLayout(支持界面滑动及左右菜单滑动)

    一.前言: 我之前很早的时候,写过一篇<左右滑出菜单>的文章: http://blog.csdn.net/qingye_love/article/details/8776650 用的是对V ...

  8. hdu 1026 Ignatius and the Princess I【优先队列+BFS】

    链接: http://acm.hdu.edu.cn/showproblem.php?pid=1026 http://acm.hust.edu.cn/vjudge/contest/view.action ...

  9. DataSource绑定DataTable.Select()显示system.data.DataRow问题解决的方法

    有时候我们须要在控件中绑定DataTable中设定条件过滤后的数据,此时,在winForm环境中,一些控件不能正确绑定并显示数据内容.这是由于DataTable.Select()返回的是DataRow ...

  10. 用ASP编写购物车代码

    网上购物已成为生活的潮流,在网上购物之后,想要随时查看自己已买的东西,想要随时删除或改动某件商品数量,要怎么做呢?以下我就来写代码及释义.先来做用户登陆页面(login.asp): <html& ...