java中文件目录的写法_Java中的文件和目录管理----Path、Files

在Java中,文件或是目录习惯用java.io.File对象来表示,但是File类有很多缺陷,比如它的很多方法不能抛出异常,它的delete方法经常莫名其妙的失败等,旧的File类经常是程序失败的根源。因此在Java7中有了更好的替代:java.nio.file.Path及java.nio.file.Files。

Path接口的名字非常恰当,就是表示路径的,API中讲Path对象可以是一个文件,一个目录,或是一个符号链接,也可以是一个根目录。用法很简单。创建Path并不会创建物理文件或是目录,path实例经常引用并不存在的物理对象,要真正创建文件或是目录,需要用到Files类。

Files类是一个非常强大的类,它提供了处理文件和目录以及读取文件和写入文件的静态方法。可以用它创建和删除路径。复制文件。检查路径是否存在等。此外。Files还拥有创建流对象的方法。

Path基本用法:

1.创建一个路径

Path path=FileSystems.getDefault().getPath("d:/users/日记5.txt"); //并没有实际创建路径,而是一个指向d:/users/日记5.txt路径的引用

Path path=Paths.get("d:/users/日记5.txt"); //Paths类提供了这个快捷方法,直接通过它的静态get方法创建path

2.得到目录、文件名

path.toString(); //得到全路径---d:/users/日记5.txt

path.getFileName(); //得到文件名---日记5.txt

path.getParent(); //得到父目录---d:/users

path.getNameCount(); //得到目录中元素的个数,不算根---2

path.getname(0); //得到路径中第一个元素名,不算根---users

path.getname(1); //得到路径中第二个元素名,不算根---日记5.txt

path.getRoot(); //得到根目录---/

Files基本用法

1.创建和删除文件与目录

Path pathfile=Paths.get("d:/users/日记5.txt");

Path pathdirec=Paths.get("d:/users");

Files.createFile(pathfile); //创建文件

Files.createDirectory(pathdirec); //创建目录

Files.delete(pathfile); //直接删除路径

Files.deleteIfExists(pathfile); //先判断是否存在,存在再删

2.复制和移动文件

Files.copy(source, target, StandardCopyOption.REPLACE_EXISTING); //复制文件,StandardCopyOption.REPLACE_EXISTING表示:如果目标文件存在,则替换它

Files.move(source2, target2, StandardCopyOption.REPLACE_EXISTING); //移动文件

3.文件的读取和写入

Files类读取和写入的都是小型二进制文件和文本文件,大型文件要用流。

Files.readAllLines(textFile, charset); //读取文本文件,按charset编码,textFile为要读取文件的路径,返回List型的数据

Files.readAllBytes(path); //读取二进制文件 ,返回二进制数据的byte[]数组

Files.write(path,bytes); //写入二进制数据。往path路径下的文件写入byte[]型的bytes数据,返回的是一个path路径

Files.write(textFile, lines, charset); //写入文本数据 。把List 型的lines数据写入到文件textFile中,以charset编码形式。

具体看代码:

package app13;

import java.io.IOException;

import java.nio.charset.Charset;

import java.nio.file.Files;

import java.nio.file.Path;

import java.nio.file.Paths;

import java.nio.file.StandardCopyOption;

import java.util.Arrays;

import java.util.List;

public class FilesTest {

public static void main(String[] args) {

// 复制文件

Path source = Paths.get("d:/users/日记1.txt");

Path target = Paths.get("d:/users/日记2.txt");

try {

Files.copy(source, target, StandardCopyOption.REPLACE_EXISTING);

} catch (IOException ex) {

ex.printStackTrace();

}

Path source2 = Paths.get("d:/users/日记3.txt");

Path target2 = Paths.get("d:/users/yxj/日记3.txt");

try {

Files.move(source2, target2, StandardCopyOption.REPLACE_EXISTING);

} catch (IOException ex) {

ex.printStackTrace();

}

// 读出和写入操作

Path textFile = Paths.get("d:/users/日记5.txt");

Charset charset = Charset.forName("UTF-8");

String line1 = "你好:";

String line2 = "Files";

List lines = Arrays.asList(line1, line2);

try {

Files.write(textFile, lines, charset);

} catch (IOException ex) {

ex.printStackTrace();

}

List linesRead = null;

try {

// read back

linesRead = Files.readAllLines(textFile, charset);

} catch (IOException ex) {

ex.printStackTrace();

}

if (linesRead != null) {

for (String line : linesRead) {

System.out.println(line);

}

}

}

}

运行结果:

你好:

Files

—-再查看实际电脑中的文件,相应文件的内容和位置也发生了变化

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值