Java-0024-用I/O實現拷貝檔案
2016.8.5
若是檔案就拷貝,
若是資料夾就深層遍歷拷貝。
public static void copy(String fileName,String newFileName){
if(fileName==newFileName){
System.out.println("檔名不能重複");
return ;
}
File file = new File(fileName);
File newFile = new File(newFileName);
if(!file.exists()){
System.out.println("檔案不存在,拷貝失敗!");
}
else if(file.isFile()){
copyFile(fileName,newFileName);
}
else if(file.isDirectory()){
newFile.mkdirs();
for(String name:file.list()){
System.out.println(name);
copy(fileName+"\\"+name,newFileName+"\\"+name);
}
}
}
具體拷貝方法
不過這個只適合拷貝文字,拷貝圖片之類的就不能成功拷貝了,檔案大小會變,也無法正常開啟
拷貝任意格式檔案參見下一個方法
public static void copyFile(String fileName,String newName){
File file = new File(fileName);
File newFile = new File(newName);
if(!file.exists()){
System.out.println("檔案不存在,拷貝失敗!");
}
else if(file.isDirectory()){
System.out.println("這不是一個檔案,拷貝失敗!");
}
else{
//只能拷貝文字,拷貝其他並不能成功,大小會變,內容也亂了
BufferedReader br=null;
BufferedWriter bw=null;
try {
if(!newFile.exists()){
newFile.createNewFile();
}
FileReader reader = new FileReader(file);
FileWriter writer = new FileWriter(newFile);
br = new BufferedReader(reader);
bw = new BufferedWriter(writer);
String line=br.readLine();
while(line!=null){
bw.write(line);
bw.newLine();
line=br.readLine();
bw.flush();
}
System.out.println("拷貝成功!");
} catch (IOException e) {
e.printStackTrace();
} finally {
if(br!=null){
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(bw!=null){
try {
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
這個方法可以拷貝任意格式的檔案
public static void copyFile(String fileName,String newName){
File file = new File(fileName);
File newFile = new File(newName);
if(!file.exists()){
System.out.println("檔案不存在,拷貝失敗!");
}
else if(file.isDirectory()){
System.out.println("這不是一個檔案,拷貝失敗!");
}
else{
//可以拷貝任意格式的檔案
FileInputStream input=null;
FileOutputStream output=null;
byte[] b=new byte[128];
int length;
try {
if(!newFile.exists()){
newFile.createNewFile();
}
input = new FileInputStream(file);
output = new FileOutputStream(newFile);
while(true){
length=input.read(b);
if(length==-1){
break;
}
output.write(b,0,length);
output.flush();
}
System.out.println("拷貝成功!");
} catch (IOException e) {
e.printStackTrace();
} finally {
if(input!=null){
try {
input.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(output!=null){
try {
output.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
相關文章
- Java實現檔案拷貝的4種方法.Java
- IOCP 檔案拷貝
- 實現物件淺拷貝、深拷貝物件
- Linux使用expect實現遠端拷貝檔案Linux
- js實現深拷貝和淺拷貝JS
- 淺拷貝與深拷貝的實現
- IO流-檔案拷貝
- 檔案內容拷貝
- 檔案I/O
- 深拷貝與淺拷貝的實現(一)
- linux採用scp命令拷貝檔案到本地,拷貝本地檔案到遠端伺服器Linux伺服器
- 自己寫的unix檔案拷貝指令cp實現函式函式
- xcopy 實現批處理拷貝檔案或資料夾
- 【JS】深拷貝與淺拷貝,實現深拷貝的幾種方法JS
- Golang命令列拷貝檔案Golang命令列
- asm拷貝檔案到檔案系統ASM
- [JS系列二]談談深拷貝和淺拷貝,如何實現深拷貝JS
- js實現深拷貝JS
- [java IO流]之檔案拷貝Java
- c語言拷貝檔案程式C語言
- Python基礎 - 檔案拷貝Python
- 二進位制檔案拷貝
- 深拷貝和淺拷貝的區別是什麼?實現一個深拷貝
- 跨網路拷貝檔案的簡單實踐
- 怎麼實現深拷貝
- 檔案操作(二進位制拷貝)
- 使用expect指令碼SCP拷貝檔案指令碼
- linux 帶路徑拷貝檔案Linux
- [20171221]利用rman實現2臺機器檔案拷貝
- 檔案管理I/O筆記筆記
- js物件實現深淺拷貝!!JS物件
- JavaScript實現淺拷貝的方法JavaScript
- 資料檔案拷貝檔案頭驗證錯誤
- ORACLE UTL_FILE檔案包的應用,檔案I/O操作Oracle
- Java IO 流之拷貝(複製)檔案Java
- linux parallel rsync 拷貝N多檔案LinuxParallel
- 零拷貝讀取檔案成 Go 物件Go物件
- 使用UltraEdit 拷貝二進位制檔案