本文目錄一覽:
怎樣用java程序實現文件拷貝
通過輸入輸出流解決此問題,具體的可以查看JDK的API,實在不會的話,百度一下應該都有一堆這方面的代碼。
java複製文件
in是一個文件輸入流
data是一個byte數組
in.avaliable()是取得輸入流的位元組數
data = new byte[in.available()];是給這個數組根據輸入位元組數分配空間
in.read(data);是把輸入內容讀到數組裡去
Java怎麼實現文件拷貝
工具/原料
一台配置了java環境的電腦
一款適合自己的開發集成環境,這裡用的是eclipse Kepler
文件拷貝DEMO
1.首先,理清思路,然後我們再動手操作。
拷貝,有源文件,和目的文件。
如果原文件不存在,提示,報錯。
如果目的文件不存在,創建空文件並被覆蓋。
如果目的地址,也即目的路徑不存在,創建路徑。
拷貝,輸入流,輸出流,關閉流。
拷貝前輸出文件大小,計算拷貝大小,比較並核實。輸出。
2.首先呢,先判斷傳參是否完整。
如果不夠兩個參數,或者多於兩個參數,提示錯誤。
如果目標文件不存在,創建 空文件繼續複製。
3.在開始前,輸出被拷貝的源文件的大小。
4.獲得文件名稱,即短名。也即路徑下的文件全名(包括文件擴展名)。
5.拷貝的關鍵,這裡用的簡單的緩衝流。從源文件到目的文件。
number of bytes copied 即是對拷貝長度的累計,直到拷貝完成,輸出。
6.將步驟二中的判斷並拷貝文件的代碼寫在一個main函數中,
執行拷貝,拷貝完成。結果拷貝大小和源文件大小一致,成功。
7.在執行前,記得輸入參數。
如果是使用命令提示符,執行 javac CopyFile.java 之後,
執行 java CopyFile [源文件長名] [目的文件長名]
如果是使用的eclipse,在運行前設置一下運行參數,完成後點擊運行,如下圖。
P.S. 這裏面的所謂「長名」是指完整絕對路徑+文件名+文件類型擴展名
這裡的源文件及目的文件的名稱分別為:
E:/IP_Data.rar 和 D:/testFiles/IP_Data.rar
END
Java 將一個文件複製到另一處
test.copy(“G:\\G盤寄存資料\\我的文檔1\\音樂課堂.doc”,”G:\\G盤寄存資料”);
請注意上面的有個文件夾名字叫「G盤寄存資料」,你複製的文件後的新文件名也叫「G盤寄存資料」,這樣名字重複了,所以就出錯了。
可以把程序改成這樣的話就行了:
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class FileCopy {
public void copy(String src, String dest){//**********
InputStream is=null;
OutputStream os=null;
char ch[]=src.toCharArray();
//************新添加的代碼**********
int pos=0;
for(int i=ch.length-1;i=0;i–)
{
if(ch[i]==’\\’)
{
if(ipos)
pos=i;
}
}
String temp=src.substring(pos);
dest=dest+temp;
System.out.println(“dest=”+dest);
//****************************************
try {
is=new BufferedInputStream(new FileInputStream(src));
os=new BufferedOutputStream(new FileOutputStream(dest));
byte[] b=new byte[256];
int len=0;
String str=null;
StringBuilder sb=new StringBuilder();
try {
while((len=is.read(b))!=-1){
os.write(b,0,len);
}
os.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(is!=null){
try {
is.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}finally{
if(os!=null){
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public static void main(String[] args) {
FileCopy test=new FileCopy();
test.copy(“G:\\G盤寄存資料\\我的文檔1\\hello.txt”,”G:\\G盤寄存資料”);//++++++++++++++++++++++
}
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/278801.html