本文目錄一覽:
- 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的對象?
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/239339.html