導航:首頁 > 編程語言 > java流復制文件

java流復制文件

發布時間:2022-08-18 05:56:24

java中怎麼復制一個文件的內容

主要是用到java裡面的i/o流。代碼例子如下:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

/**
* java讀寫文件,復制文件
* 讀取d:/1.txt文件內容,寫入f:/text.txt文件中.
* @author young
*
*/
public class FileWriterTest {
// 讀寫文件
public static void rwFile(){
FileWriter fw = null;
BufferedReader br = null;
try {
fw = new FileWriter("f:\\text.txt", true);
br = new BufferedReader(new InputStreamReader(
new FileInputStream("d:\\1.txt"), "UTF-8"));
String line = null;
while ((line = br.readLine()) != null) {
System.out.println("文件內容: " + line);
fw.write(line);
fw.flush();
}
br.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fw != null) {
try {
fw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}

public static void main(String[] args) {
rwFile();
}
}
首先在D盤新建文件1.txt,輸入任意內容。然後執行java代碼即可。

❷ java中的IO流如何復制文件

遞歸啊,先在復制位置創建一個文件夾與被復制的相同,然後遍歷復制文件夾下面的文件,如果文件夾下面還有文件夾,接著創建文件夾遍歷復制下面文件

❸ java如何拷貝文件到另一個目錄下

下面列舉出4種方式:

1、使用FileStreams復制

這是最經典的方式將一個文件的內容復制到另一個文件中。 使用FileInputStream讀取文件A的位元組,使用FileOutputStream寫入到文件B。正如你所看到的我們執行幾個讀和寫操作try的數據,所以這應該是一個低效率的,下一個方法我們將看到新的方式。 這是第一個方法的代碼:

❹ java我用流來復制文件可是老是拒絕訪問怎麼回事

兄弟,首先window環境下文件目錄是不能用Java流來讀取的,目錄是使用mkdir或者mkdirs方法創建的。
第二你復制的時候BufferedInputStream的read() 每次是讀取一個位元組,你用int來接收,這樣會隱式轉型成4個位元組,復制的文件會不對。
第三文件讀取的截至調試是返回的 -1 , 不是 1,也不是0
第四當然能正確關閉流這是對的,但是緩存流關閉流的時候,並沒有關閉FileInputStream和FileOutputStream,所以建議在關閉緩存流之前先關閉掉FileInputStream和FileOutputStream。
文件復制我是這么寫的:
import java.io.File;
import java.util.ArrayList;
import java.util.List;
public class MyFile extends File {
private List<MyFile> childFiles;

public MyFile(String pathname) {
super(pathname);
}

public MyFile(File file) {
super(file.getAbsolutePath());
}
public List<MyFile> getChildFiles() {
return childFiles;
}
public void setChildFiles(List<MyFile> childFiles) {
this.childFiles = childFiles;
}

}
------------------------------------------------------------------------------

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.junit.Test;
public class TestFile {
@Test
public void fileTest() {
MyFile myFile = new MyFile("D:\\迅雷下載");
getAllChildFiles(myFile);
printFile(myFile);
}
@Test
public void FileTest() {
MyFile srcFile = new MyFile("D:\\迅雷下載\\activiti-6.0.0");
MyFile targetFile = new MyFile("D:\\迅雷下載\\activiti-6.0.1");
try {
getAllChildFiles(srcFile);
File(srcFile,targetFile);
} catch (Exception e) {
e.printStackTrace();
}
}

public void getAllChildFiles(MyFile myFile) {
myFile.setWritable(true,true);
File[] files = myFile.listFiles();
List<MyFile> childFiles = new ArrayList<MyFile>();
for (File file : files) {
MyFile mf = new MyFile(file);
childFiles.add(mf);
if(mf.isDirectory()) {
getAllChildFiles(mf);
}
}
myFile.setChildFiles(childFiles);
}

public void printFile(MyFile myFile) {
System.out.println(myFile.getAbsolutePath());
System.out.println("====>"+myFile.getName());
List<MyFile> childFiles = myFile.getChildFiles();
if(childFiles != null && childFiles.size() > 0) {
for (MyFile mf : childFiles) {
printFile(mf);
}
}
}

public void File(MyFile srcFile,MyFile targetFile) throws Exception {
if(srcFile.isDirectory()) {
targetFile.mkdirs();
}else {
FileInputStream fis = new FileInputStream(srcFile);
FileOutputStream fos = new FileOutputStream(targetFile);
byte[] buffer = new byte[1024];
int len = 0;
while((len = fis.read(buffer)) != -1) {
fos.write(buffer,0,len);
}
fis.close();
fos.close();
}
List<MyFile> srcChildFiles = srcFile.getChildFiles();
List<MyFile> targetChidFiles = new ArrayList<MyFile>();
if(srcChildFiles != null && srcChildFiles.size() > 0) {
for (MyFile srcf : srcChildFiles) {
StringBuilder targFilePath = new StringBuilder(targetFile.getAbsolutePath());
targFilePath.append(MyFile.separator).append(srcf.getName());
System.out.println(targFilePath.toString());
MyFile targf = new MyFile(targFilePath.toString());
targetChidFiles.add(targf);
File(srcf,targf);
}
}
targetFile.setChildFiles(targetChidFiles);
}

}
希望能幫助到你,謝謝!!

❺ java 輸入輸出流的復制文件的問題

可以通過「BufferedReader」讀取文件內容,之後通過OutputStreamWriter 寫入新文件,舉例:
OutputStreamWriter pw = null;//定義一個流
pw = new OutputStreamWriter(new FileOutputStream(「D:/testCopy.txt」),"GBK");//確認流的輸出文件和編碼格式,此過程創建了「test.txt」
bre = new BufferedReader(new FileReader("D:/test.txt"));//此時獲取到的bre就是整個文件的緩存流
while ((str = bre.readLine())!= null) // 判斷最後一行不存在,為空結束循環
{
pw.write(str );//將要寫入文件的內容,可以多次write
};
bre .close();//關閉流
pw.close();//關閉流
備註:文件流用完之後必須及時通過close方法關閉,否則會一直處於打開狀態,直至程序停止,增加系統負擔。

❻ java怎麼用IO流把一個文件(SQLite資料庫文件)復制到另一個位置

File src=new File("原文件地址");
InputStream inps = new FileInputStream(file) ;//輸入流
File des = new File("目的文件地址") ;
OutputStream ops = new FileOutputStream(des) ;//輸出流
if(!des.isExist()){//不存在,新建
des.createNewFile() ;
}
int temp = 0 ;
while((temp=inps.write!)=-1){//讀入,判斷是否讀取結束
ops.write(temp) ;//寫入
}
try{
ops.flush() ;
ops.close() ;
inps.close() ;
}catch(Exception e){
...
}
純手打,可能會有些錯誤,但是總體思路是正確的,具體的可以參考JavaIO包!看看API

❼ 使用Java文件流將"E:\\kj.txt"文件中的內容復制到"D:\\new.txt".

importjava.io.*;
publicclass
{
publicstaticvoidmain(Stringargs[])throwsIOException
{
inti;
FileReaderfr;
FileWriterfw;
try
{
fr=newFileReader("E:\kj.txt");
}
catch(FileNotFoundExceptione)
{
System.out.println("notfoundthisfile");
return;
}
try
{
fw=newFileWriter("D:\new.txt");
}
catch(FileNotFoundExceptione)
{
System.out.println("error");
return;
}catch(IOExceptione){
System.out.println("wrong");
return;
}
try
{
i=fr.read();
while(i!=-1)
{
fw.write(i);
i=fr.read();
}

fr.close();
fw.close();
}
catch(IOExceptione)
{
System.out.println("error");
}
}
}

❽ JAVA IO流復制文件內容

呃,簡單地說是因為你對同一個文件同一次讀取進行兩次,第一次while讀取完後,你本意是僅僅想看看裡面到底是什麼東西,所以你命令fis一個位元組一個位元組地往下讀,直到fis讀取到文件的末尾(此時while裡面的!=-1條件為假),但事實上是,你認為你在看,其實你是在讀。你看完後不滿足又想看一次,你讓fis梅開二度,又用另一個while去命令同一個fis一個位元組一個位元組的往下讀,但早在第一個while結束後,fis已經卡在了文件的末尾了,再命令fis去read返回的永遠都是-1,所以此時在第二個while語句中fis執行第一次read時就跳出來了,為啥?因為fis.read()返回為-1啊。所以C就壓根沒賦到,而且即便賦值,C也只能裝下一個char啊。
至於這么解決,思路如下:你是通過fis一個位元組一個位元組地讀取給一個int類型變數date,那麼既然date可以列印出,可以賦給char c,自然可以被寫到文件裡面去;那麼你看看fos能不能一個位元組一個位元組地寫文件,這樣在while中,fis每讀一個位元組,fos就把它寫文件(想想一下這個效率吧~~)。不過一定要記住,同一個fis不可能兩次踏進同一個文件兩次以上,一個while就玩完!!

❾ 用java中的輸入輸出流編寫復制文件程序。

給你一個復制的方法.前面判斷邏輯相信你自己能搞定吧.
public static long forChannel(File f1, File f2) throws Exception { long time = new Date().getTime(); int length = 2097152; FileInputStream in = new FileInputStream(f1); FileOutputStream out = new FileOutputStream(f2); FileChannel inC = in.getChannel(); FileChannel outC = out.getChannel(); ByteBuffer b = null; while (true) { if (inC.position() == inC.size()) { inC.close(); outC.close(); return new Date().getTime() - time; } if ((inC.size() - inC.position()) < length) { length = (int) (inC.size() - inC.position()); } else length = 2097152; b = ByteBuffer.allocateDirect(length); inC.read(b); b.flip(); outC.write(b); outC.force(false); } }
直接調用該方法.f1 是需要復制的文件,f2是復制到目標文件

閱讀全文

與java流復制文件相關的資料

熱點內容
pythonclass使用方法 瀏覽:221
移動加密軟體去哪下載 瀏覽:281
php彈出alert 瀏覽:207
吉林文檔課件加密費用 瀏覽:131
感測器pdf下載 瀏覽:284
隨車拍app綁定什麼設備 瀏覽:896
方維團購系統源碼 瀏覽:991
linux反彈shell 瀏覽:159
列印機介面加密狗還能用嗎 瀏覽:301
二板股票源碼 瀏覽:448
度人經pdf 瀏覽:902
怎麼配置android遠程伺服器地址 瀏覽:960
java程序員看哪些書 瀏覽:943
什麼app可以免費和外國人聊天 瀏覽:797
pdf手寫筆 瀏覽:182
別永遠傷在童年pdf 瀏覽:990
愛上北斗星男友在哪個app上看 瀏覽:421
主力散戶派發源碼 瀏覽:671
linux如何修復伺服器時間 瀏覽:61
榮縣優途網約車app叫什麼 瀏覽:479