首页 > 编程语言 >Java 7如何操纵文件属性

Java 7如何操纵文件属性

时间:2023-03-28 11:01:46浏览次数:33  
标签:Files Java nio 文件属性 java System 操纵 file import


Java 7如何操纵文件属性

作者: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


标签:Files,Java,nio,文件属性,java,System,操纵,file,import
From: https://blog.51cto.com/prettycms/6154235

相关文章

  • Java 8实现BASE64编解码
    Java8实现BASE64编解码作者:chszs,转载需注明。Java一直缺少BASE64编码API,以至于通常在项目开发中会选用第三方的API实现。但是,Java8实现了BASE64编解码API,它包含到java.ut......
  • JavaScript基础
    1.引入jshttps://www.w3cschool.cn/javascript/用script标签,在其中写js代码<scriptsrc="JS/style.js"></script>Numberjs不区分小数和整数NaN表示不是一......
  • ]Java中HashMap遍历的两种方式
    笔试的时候,两次都要用到工具类hashmap,这个东西用起来果然爽啊,但是在我遍历这个map的时候,迭代器写不出来了,真是悲催了,于是还是找下吧,下面的可是要记住用处啊Java中HashM......
  • Java学习日记3
    2023.3.27学习Java打卡Java方法#方法是解决一类问题的步骤的有序组合#方法包含于类或对象中#方法在程序中被创建,在其他地方被引用例:publicclassdemo1{publi......
  • Java学习----稀疏数组
    稀疏数组当数组中大部分元素为0,或为同一值时,可用稀疏数组来保存。处理方式:记录数组一共有几行几列,有多少不同值。把具有不同值的元素和行列和值记录在小规模数组中......
  • Java学习---计算器(简易)
    小练习:写一个计算器,要求实现加减乘除功能,并且能循环接受新的数据。以下是我的代码:importjava.util.Scanner;publicclassDemo1{publicstaticvoidmain(Strin......
  • Java学习----冒泡排序
    冒泡排序importjava.util.Arrays;publicclassMaoPaoPaiXu{publicstaticvoidmain(String[]args){int[]a={1,2,3,5,7,9,22,44,63,75};......
  • Java泛型详解
    注:本文转自:https://blog.csdn.net/qq_41701956/article/details/123473592泛型在java中有很重要的地位,无论是开源框架还是JDK源码都能看到它。毫不夸张的说,泛型是通用设......
  • MyBatis中Java类型与别名的对应关系表
    常见Java类型有许多内置的类型别名。注意,它们都是不区分大小写的,由于重载名称而对原语进行特殊处理。下面给出对应关系表:别名Java类型_bytebyte_longlong_......
  • 第一篇 javascript 数据类型
    1、数据类型基础数据类型(7种)1、String2、Number3、Boolean4、null5、undefined6、Symbol7、bigInit引用数据类型(Object)1、Object2、Array3、Fun......