本文目录一览:
- 1、在Java 7中如何对文件进行操作
- 2、java 怎么提高文件拷贝迁移效率nio
- 3、使用Java语言如何实现快速文件复制
- 4、怎样用java程序实现文件拷贝
- 5、我用JAVA NIO 来复制文件,但没有发现和传统的流的方式来操作有明显的优势,为什么呢?
在Java 7中如何对文件进行操作
1.创建文件
2.删除文件
3.复制文件
4.文件移动/改名
这文件是以对Java7里提供的新的Path类很熟悉为前提,如果不熟悉这个类,Path 是文件系统里对位置的一个逻辑概念,例如 c: 和 ../foobar.txt 都是Path。
5.创建和删除文件
下面的代码片段展示的是用 Files.createFile(Path target) 方法创建文件的基本用法。
Path target = Paths.get("D:\Backup\MyStuff.txt"); Path file = Files.createFile(target);
很多时候,出于安全的原因,可能希望在创建的文件上设置一下属性,例如:是否可读/可写/写执行。这些属性依赖于文件系统的种类,需要使用跟文件系统相应的权限辅助类来完成这种操作。例如,PosixFilePermission和PosixFilePermissions 为 POSIX 文件系统设计的。下面的是在POSIX文件系统上的文件设置读写权限的用法。
Path target = Paths.get("D:\Backup\MyStuff.txt"); SetPosixFilePermission perms= PosixFilePermissions.fromString("rw-rw-rw-"); FileAttributeSetPosixFilePermission attr= PosixFilePermissions.asFileAttribute(perms); Files.createFile(target, attr);
这个 java.nio.file.attribute 包里提供了很多关于 FilePermission 的类。
警告 当创建一个带有权限属性的文件时,请注意包含这个文件的文件夹是否有权限的强制约束。例如,会发现,由于这些限制,尽管给创建的文件指定了 rw-rw-rw 权限,实际创建的结果却是 rw-r–r– 。
6.删除文件,使用 Files.delete(Path) 这个方法。
Path target = Paths.get("D:\Backup\MyStuff.txt"); Files.delete(target);
拷贝和移动文件
下面的代码向展示的是使用 Files.copy(Path source, Path target) 方法做文件拷贝的基本用法。
Path source = Paths.get("C:\My Documents\Stuff.txt"); Path target = Paths.get("D:\Backup\MyStuff.txt"); Files.copy(source, target);
经常的,在拷贝文件的过程中可能希望指定一些操作设置。在Java7里,可以通过使用 StandardCopyOption enum 来设置这些属性。下面看一个例子。
import static java.nio.file.StandardCopyOption.*;Path source = Paths.get("C:\My Documents\Stuff.txt");Path target = Paths.get("D:\Backup\MyStuff.txt");Files.copy(source, target, REPLACE_EXISTING);
拷贝操作时可以使用的属性还包括COPY_ATTRIBUTES (保留文件属性) 和 ATOMIC_MOVE (确保移动事务操作的成功,否则进行回滚)。
移动文件的操作跟拷贝很相似,使用 Files.move(Path source, Path target) 方法。
同样,也可以指定移动操作的属性,使用 Files.move(Path source, Path target, CopyOptions...) 方法里的参数来设置。
import static java.nio.file.StandardCopyOption.*; Path source = Paths.get("C:\My Documents\Stuff.txt"); Path target = Paths.get("D:\Backup\MyStuff.txt"); Files.move(source, target, REPLACE_EXISTING, COPY_ATTRIBUTES);
可以看出,新的用于文件操作的 NIO.2 API 非常便于使用。
java 怎么提高文件拷贝迁移效率nio
Java NIO的创建目的是为了让Java程序员可以实现高速I/O而无需编写自定义的本机代码。Java NIO的高效得益于其两大"助手":Channel和Buffer。NIO将最耗时的I/O操作(即填充和提取缓冲区)转移回操作系统,因而可以极大地提高速度。
使用Java语言如何实现快速文件复制
使用Java语言如何实现快速文件复制:
代码:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.channels.FileChannel;
public class Test {
public static void main(String[] args){
long start = System.currentTimeMillis();
FileInputStream fileInputStream = null;
FileOutputStream fileOutputStream = null;
FileChannel inFileChannel = null;
FileChannel outFileChannel = null;
try {
fileInputStream = new FileInputStream(new File("C:\\from\\不是闹着玩的.flv"));
fileOutputStream = new FileOutputStream(new File("C:\\to\\不是闹着玩的.flv"));
inFileChannel = fileInputStream.getChannel();
outFileChannel = fileOutputStream.getChannel();
inFileChannel.transferTo(0, inFileChannel.size(), outFileChannel);//连接两个通道,从in通道读取数据写入out通道。
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if(fileInputStream != null){
fileInputStream.close();
}
if(inFileChannel != null){
inFileChannel.close();
}
if(fileOutputStream != null){
fileOutputStream.close();
}
if(outFileChannel != null){
outFileChannel.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
long end = System.currentTimeMillis();
System.out.println("视频文件从“from”文件夹复制到“to”文件需要" + (end - start) + "毫秒。");
}
}
怎样用java程序实现文件拷贝
通过输入输出流解决此问题,具体的可以查看JDK的API,实在不会的话,百度一下应该都有一堆这方面的代码。
我用JAVA NIO 来复制文件,但没有发现和传统的流的方式来操作有明显的优势,为什么呢?
好好读读Thinking in java文档,从1.5开始,Java对InputStream/OutputStream 进行了重新改写,用的就是NIO,因此,就算你不显示声明要用NIO,只要你的类继承了InputStream/OutputStream就已经在用NIO了,不信的话这样做
FileChannel channel=new FileInputStream.getChannel();
如果XXStream不用NIO构造,如何返回一个Channel的对象?