實例講述Java IO文件復(fù)制
前言:IO流主要分為兩大類,分別是字節(jié)流與字符流
注意:
1、音頻文件、圖片、視頻(范圍廣),就用字節(jié)流
2、只涉及到文本的,就用字符流
使用字節(jié)流復(fù)制文本內(nèi)容(其他文件也可以)
代碼如下:
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 CopyFile {
public static void main(String[] args) {
try{
File inFile=new File("src.txt"); //源文件
InputStream in=new FileInputStream(inFile); //文件輸入流
File outFile=new File("tar.txt"); //目標(biāo)文件
OutputStream out=new FileOutputStream(outFile); //文件輸出流
byte[] buff=new byte[1024]; //創(chuàng)建緩沖區(qū),分配1024個字節(jié)大小的內(nèi)存給buff
int num=0;
while((num=in.read(buff))!=-1){ //判斷每次讀取的最大字節(jié)數(shù)是否為1024
out.write(buff,0,num);
// out.write(buff); //這樣也可以,不過容易造成文件內(nèi)容不正確
out.flush(); //刷新緩沖區(qū)
String s=new String(buff);
System.out.println("文件內(nèi)容復(fù)制成功");
System.out.println("文件復(fù)制內(nèi)容為\n"+s);
}
in.close(); //關(guān)閉輸入流
out.close(); //關(guān)閉輸出流
// inFile.delete(); //刪除源文件
// outFile.renameTo(new File("reName.txt")); //輸出文件重命名
}
catch(FileNotFoundException e){
e.printStackTrace(); //在命令行打印異常信息在程序中出錯的位置及原因
}
catch(IOException e){
e.printStackTrace();
}
}
}
使用字符流復(fù)制文本內(nèi)容(僅限文本文件)
代碼如下:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class CopyFile{
public static void main(String[] args) {
try{
File inFile=new File("D:/src.txt"); //源文件
FileReader fileReader=new FileReader(inFile); //讀取文件字符流
BufferedReader bufferedReader=new BufferedReader(fileReader); //把讀取到的字符流放入緩存
File outFile=new File("D:/tar.txt"); //目標(biāo)文件
FileWriter fileWrite=new FileWriter(outFile); //寫入字符流
BufferedWriter bufferedWriter=new BufferedWriter(fileWrite); //把要輸入的字符流放入緩存
String s="";
String str = "";
while((s=bufferedReader.readLine())!=null){ //判斷文件字符流是否讀取完畢
bufferedWriter.write(s); //字符流緩存寫入文件
bufferedWriter.newLine(); //按行讀取,遇到換行符則換行
bufferedWriter.flush(); //刷新緩存
str+=s;
}
System.out.println("文件復(fù)制內(nèi)容為\n"+str);
//關(guān)閉輸入輸出流
fileReader.close();bufferedReader.close();
fileWrite.close();bufferedWriter.close();
// inFile.delete(); //刪除源文件
// outFile.renameTo(new File("reName.txt")); //輸出文件重命名
}
catch(FileNotFoundException e){
e.printStackTrace(); //在命令行打印異常信息在程序中出錯的位置及原因
}
catch(IOException e){
e.printStackTrace();
}
}
}
說明:
如果想以追加文件內(nèi)容,而不是覆蓋的方式來復(fù)制文本內(nèi)容,則修改如下
OutputStream out=new FileOutputStream(outFile,true); //字節(jié)流
FileWriter fileWrite=new FileWriter(outFile,true); //字符流
如果要在字符流指定緩存區(qū)大小,則修改如下
BufferedWriter bufferedWriter=new BufferedWriter(fileWrite,1024);
相關(guān)文章
spring.factories文件的解析源碼API機制詳解
通過本文深入探討Spring?Boot的背景歷史、業(yè)務(wù)場景、功能點以及底層原理,使讀者對Spring?Boot有了更深入的了解,結(jié)合實例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-11-11
Spring實戰(zhàn)之Bean的作用域request用法分析
這篇文章主要介紹了Spring實戰(zhàn)之Bean的作用域request用法,結(jié)合實例形式分析了spring中Bean的request作用域相關(guān)使用技巧與操作注意事項,需要的朋友可以參考下2019-11-11
從內(nèi)存地址解析Java的static關(guān)鍵字的作用
這篇文章主要介紹了從內(nèi)存地址解析Java的static關(guān)鍵字的作用,包括靜態(tài)成員變量和靜態(tài)方法等重要內(nèi)容,需要的朋友可以參考下2015-10-10
關(guān)于SpringBoot的@ConfigurationProperties注解和松散綁定、數(shù)據(jù)校驗
這篇文章主要介紹了關(guān)于SpringBoot的@ConfigurationProperties注解和松散綁定、數(shù)據(jù)校驗,@ConfigurationProperties主要作用就是將prefix屬性指定的前綴配置項的值綁定到這個JavaBean上?,通過指定的前綴,來綁定配置文件中的配置,需要的朋友可以參考下2023-05-05

