java實現檔案拷貝!
一、使用讀取位元組流的方式進行檔案的拷貝。
當檔案較小時,可通過以下程式碼實現檔案的拷貝。
版本一程式碼如下:
package webnet.course1.filecopy;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class Copy {
public static void main(String[] args) {
int n = 0;
try {
FileInputStream fis = new FileInputStream("f:\\files\\1.txt");
FileOutputStream fos = new FileOutputStream("f:\\files\\copy.txt");
while ((n = fis.read()) != -1) {
fos.write(n);
}
fis.close();
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
檔案一般儲存於硬碟之上,屬於外圍裝置。FileInputStream的read()方法每次讀取一個位元組的資料。當拷貝的檔案較大(如10M左右)或者拷貝的檔案為視訊(檔案不超過30M)等格式時,使用版本一的程式碼需要時間較長,可使用版本二程式碼進行嘗試,此時速度較之版本一有較大的提升。
版本二程式碼如下:
package webnet.course1.filecopy;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class Copy2 {
public static void main(String[] args) {
int n = 0;
try {
FileInputStream fis = new FileInputStream("f:\\files\\1.txt");
FileOutputStream fos = new FileOutputStream("f:\\files\\copy.txt");
byte[] bs = new byte[fis.available()];
while ((n = fis.read(bs)) != -1) {
fos.write(bs);
}
fis.close();
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
當拷貝的檔案更大一些(如>10M)或者拷貝的檔案為視訊(1G左右)等格式時,使用版本二的程式碼佔用的空間會比較大,可使用版本三程式碼進行嘗試。
版本三程式碼如下:
package webnet.course1.filecopy;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class Copy3 {
public static void main(String[] args) {
int n = 0;
try {
FileInputStream fis = new FileInputStream("f:\\files\\1.txt");
FileOutputStream fos = new FileOutputStream("f:\\files\\copy.txt");
byte[] bs = new byte[1024*1024];
while ((n = fis.read(bs)) != -1) {
fos.write(bs,0,n);
}
fis.close();
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
二、使用字元流方式進行檔案拷貝。
使用字元流方式進行檔案拷貝時,要求檔案應為文字格式。若為視訊或圖片等格式,在讀取檔案時會採用字元的編碼方式,導致拷貝出的檔案與原檔案不在相同。
不進行檔案拷貝,只是讀取檔案時一顆採用字元流方式讀取。讀取出的為ASCII,可通過強制型別轉換,從而顯示出讀取內容。
package webnet.course1.filecopy;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class Copy4 {
public static void main(String[] args) {
int n = 0;
try {
FileReader fis = new FileReader("f:\\files\\1.txt");
FileWriter fos = new FileWriter("f:\\files\\copy.txt");
while ((n = fis.read()) != -1) {
fos.write(n);
System.out.println((char)(n));
}
fis.close();
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
package webnet.course1.filecopy;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class Copy4 {
public static void main(String[] args) {
int n = 0;
try {
FileReader fis = new FileReader("f:\\files\\1.txt");
FileWriter fos = new FileWriter("f:\\files\\copy.txt");
char[] bs = new char[10];
while ((n = fis.read(bs)) != -1) {
fos.write(bs,0,n);
}
fis.close();
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
相關推薦
java實現檔案拷貝!
一、使用讀取位元組流的方式進行檔案的拷貝。 當檔案較小時,可通過以下程式碼實現檔案的拷貝。 版本一程式碼如下: package webnet.course1.filecopy; import java.io.FileInputStream; import
java實現檔案拷貝的幾種方式(全!!)
浪費了“黃金五年”的Java程式設計師,還有救嗎? >>>
Java實現檔案拷貝(位元組流)
/** * 拷貝檔案示例(位元組流) */ package JavaIO; import java.io.*; /** * @author 16026 * */ public class
Java常用面試題16 用IO和NIO兩種方式實現檔案拷貝
問:用IO和NIO兩種方式實現檔案拷貝 答: import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException;
Java實現檔案的拷貝複製
import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; public class C
【Java】檔案拷貝的幾種實現方案
在jdk1.7之前,java中沒有直接的類提供檔案複製功能。下面就檔案複製,提出幾種方案。 jdk1.7中的檔案複製 在jdk1.7版本中可以直接使用Files.copy(File srcFile, File destFile)方法即可。 private static
Java實現檔案以及資料夾的建立和刪除
1,檔案建立 /** * 建立指定路徑檔案 * * @param filePath:指定路徑(包括檔名的絕對路徑) */ public static void createFile(String filePath) { File file = new File(
利用IO流實現檔案拷貝
檔案的拷貝,只需將檔案位元組輸入流和輸出流結合起來即可 package com.jianshun; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; impo
Java實現檔案壓縮
1.壓縮 package com.zhuifeng.common.util; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.
java實現物件拷貝和屬性複製的使用
java實現物件拷貝和屬性複製的使用 對於某一屬性,即原始物件和目的物件的屬性名稱相同,就可以拷貝原始物件的屬性值到目的物件中。 注意屬性必須新增set,get方法,否則拷貝不成功 基本型別之間如果是屬性的型別不同,BeanUtils會嘗試去強制
HTTP POST請求報文格式分析與Java實現檔案上傳
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
Java實現檔案切割拼接
Java實現檔案分割和拼接 單執行緒實現 檔案分割 在老的FAT32檔案系統中,最大的單個檔案大小必須儲存在4G內,對於經常看電影的我這個是不能允許的。不過現在Windows有NTFS檔案系統,Linux大部分發行版為Ext4檔案系統,最大單個檔案大小能大於4G。不過這二者並不能相容。。格式化NTFS的
java實現檔案匯出到Excel
匯出excel功能: //首先把要匯出檔案的模板放到專案預設的地址下,(也就是webapp地址下) Controller @RequestMapping("value="") //匯出方法 &nbs
java實現檔案上傳_後端
maven: <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <ver
java實現檔案的下載
servlet層 package com.atguigu.servlet; import java.io.FileInputStream; import java.io.IOException; import java.net.URLEncoder; import j
用java實現檔案的拆分和合並
用java實現檔案的拆分和合並 找到一個檔案,按照100k為單位,拆分成多個子檔案,並且以編號作為檔名結束。 比如檔案 資訊.xlsx,大小是389k。 拆分之後,成為 資訊.xlsx-0——100k 資訊.xlsx-1——100k 資訊.xlsx-2——100k 資訊.xlsx-3——
java實現檔案打包下載
業務場景: 從A伺服器通過SFTP將檔案下載到應用伺服器B,需要將檔案從應用伺服器B下載到使用者本地(檔案和應用都在B伺服器) 想法: 1. 想要通
Java實現檔案的歸檔和解檔
檔案的歸檔 package cn.yimen.archiver; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import jav
JAVA實現檔案ZIP壓縮並解決中文檔名亂碼問題
一、檔案壓縮的中文亂碼問題 1、中文檔名的亂碼解決 對於壓縮的檔案,當檔名稱是中文時,若使用JDK API中自帶的類(java.util.zip.ZipEntry; java.util.zip.ZipOutputStream;)進行壓縮,壓縮完成後,可以看到壓縮包中的檔名
nodejs 實現檔案拷貝
通過4中不通的方式實現對一個檔案的拷貝 方式一:readFile 非同步一次性讀取檔案再寫入 //非同步形式讀取檔案 function copyFile(url){ const extName = path.extname(url) const fileName = path.bas