java實(shí)現(xiàn)文本復(fù)制功能
本文實(shí)例為大家分享了java實(shí)現(xiàn)文本復(fù)制的具體代碼,供大家參考,具體內(nèi)容如下
*字符流(讀,寫(xiě))
*緩沖字符流(讀,寫(xiě))
文本復(fù)制功能:
package cn.yunhe.io;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Reader;
import java.io.Writer;
public class FileCopy {
public static void main(String[] args) throws IOException {
copyMethod();
}
/**
* 文本復(fù)制功能
* 1,找到需要復(fù)制的文本路徑,創(chuàng)建字符流讀取對(duì)象
* 2,將字符流讀取對(duì)象放入緩沖字符流中,為了方便一行一行讀取
* 3,找到需要復(fù)制到的文本路徑,創(chuàng)建寫(xiě)入字符流,
* 4,將寫(xiě)入字符流放在緩沖字符流中,為了方便可以進(jìn)行字符串的直接寫(xiě)入
* 5,使用while循環(huán)進(jìn)行對(duì)象的讀取,每循環(huán)一次讀一行,將讀取的內(nèi)容存放在定義好的字符串類型中,因?yàn)槭褂?
* 緩沖字符流讀取的內(nèi)容返回的是字符串類型,當(dāng)返回值為null時(shí),讀取完畢
* 6,在循環(huán)中將讀取的內(nèi)容使用寫(xiě)入緩沖字符流進(jìn)行寫(xiě)入到緩沖字符流中,每寫(xiě)一次,就使用flush()刷新一次
* 7,最后將所有流關(guān)閉
* @throws IOException
*/
public static void copyMethod() throws IOException {
Reader rd=new FileReader("E:/coyp.txt");//創(chuàng)建一個(gè)字符流讀取對(duì)象
BufferedReader br=new BufferedReader(rd);//創(chuàng)建一個(gè)緩沖字符流讀取對(duì)象,參數(shù)傳將要緩沖的字符流對(duì)象
Writer wt=new FileWriter("E:/coyp01.txt");//創(chuàng)建一個(gè)字符流寫(xiě)入對(duì)象
BufferedWriter bw=new BufferedWriter(wt);//創(chuàng)建一個(gè)緩沖字符流寫(xiě)入對(duì)象
String str=null;//按行讀取,str存放讀取的內(nèi)容
while((str=br.readLine())!=null) {//使用while循環(huán)每次讀取一行,將每次讀取的內(nèi)容存放在str中
bw.write(str);//使用緩沖字符流寫(xiě)入內(nèi)容,可以寫(xiě)字符串,將每次讀取的內(nèi)容寫(xiě)入BufferedWriter緩沖字符流中
bw.flush();//每次進(jìn)行刷新一次
}
//關(guān)閉流
bw.close();
wt.close();
br.close();
rd.close();
}
}
以上就是本文的全部?jī)?nèi)容,小編再為大家分享兩段代碼:Java實(shí)現(xiàn)簡(jiǎn)單文本文件復(fù)制
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class TextFileCopy {
public static void main(String[] args) {
FileReader reader = null;
FileWriter writer = null;
try {
// 創(chuàng)建文件輸入輸出流
reader = new FileReader("F:\\電子文檔\\各種JDBC連接.txt");
writer = new FileWriter("F:\\test.txt");
int flag = 0;
// 從輸入流讀取內(nèi)容使用輸出流輸出
while ((flag = reader.read()) != -1) {
writer.write(flag);
}
System.out.println("復(fù)制文本成功");
} catch (Exception e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close(); // 關(guān)閉文件輸入流
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (writer != null) {
try {
writer.close(); // 關(guān)閉文件輸出流
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
用java實(shí)現(xiàn)文件的復(fù)制功能:
通過(guò)選擇合適的下列流進(jìn)行文件的復(fù)制
a)字符流(FileWriter FileReader)
b)字節(jié)流(FileInputStream,FileOutputStream)
如下需求,選擇合適的流完成操作:
文件復(fù)制的邏輯:循環(huán)的讀取舊文件的數(shù)據(jù),循環(huán)的寫(xiě)出到新文件里。
1)圖片的復(fù)制,把用戶輸入的路徑代表的圖片復(fù)制到同目錄,文件名改為原文件名加_new。
例如:test1.png--》new_test1.png
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
/**通過(guò)選擇合適的下列流進(jìn)行文件的復(fù)制
a)字符流(FileWriter FileReader)
b)字節(jié)流(FileInputStream,FileOutputStream)
如下需求,選擇合適的流完成操作:
文件復(fù)制的邏輯:循環(huán)的讀取舊文件的數(shù)據(jù),循環(huán)的寫(xiě)出到新文件里。
1)圖片的復(fù)制,把用戶輸入的路徑代表的圖片復(fù)制到同目錄,文件名改為原文件名加_new。
例如:test1.png--》new_test1.png
*
* */
public class Test2 {
public static void main(String[] args) {
copfile();
}
public static void copfile(){
File filein=new File("src\\day17\\test1.png");
File fileout=new File("src\\day17\\new_test1.png");
byte[] buffer=new byte[1024];
int temp=0;
FileInputStream fis=null;
FileOutputStream fos=null;
try {
fis=new FileInputStream(filein);
fos=new FileOutputStream(fileout);
while((temp=fis.read(buffer))!=-1){
fos.write(buffer, 0, temp);
}
fos.flush();
System.out.println("copy完成?。?!");
} catch (FileNotFoundException e) {
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}finally{
if(fos!=null){
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(fis!=null){
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
MyBatis Plus之實(shí)現(xiàn)動(dòng)態(tài)排序方式
這篇文章主要介紹了MyBatis Plus之實(shí)現(xiàn)動(dòng)態(tài)排序方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02
Mybatis中使用萬(wàn)能的Map傳參實(shí)現(xiàn)
在編程中,有可能遇到我們的實(shí)體類或者數(shù)據(jù)庫(kù)中表的字段或參數(shù)過(guò)多的情況,那這時(shí)候用Map傳參是比較理想的選擇,本文就詳細(xì)的介紹一下如何使用,感興趣的可以了解下2021-07-07
聊聊java中一些減少if else 的編碼習(xí)慣的方法
這篇文章主要介紹了聊聊java中一些減少if else 的編碼習(xí)慣的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
Java簡(jiǎn)單工廠模式定義與用法實(shí)例分析
這篇文章主要介紹了Java簡(jiǎn)單工廠模式定義與用法,結(jié)合實(shí)例形式分析了java簡(jiǎn)單工廠模式的相關(guān)定義與使用技巧,并給出了原理類圖進(jìn)行總結(jié),需要的朋友可以參考下2019-07-07
Intellij IDEA 2017.3使用Lombok及常用注解介紹
這篇文章主要介紹了Intellij IDEA 2017.3使用Lombok及常用注解介紹,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
詳解JAVAEE——SSH三大框架整合(spring+struts2+hibernate)
這篇文章主要介紹了詳解JAVAEE——SSH三大框架整合(spring+struts2+hibernate),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07
使用SpringBoot進(jìn)行身份驗(yàn)證和授權(quán)的示例詳解
在廣闊的 Web 開(kāi)發(fā)世界中,身份驗(yàn)證是每個(gè)數(shù)字領(lǐng)域的守護(hù)者,在本教程中,我們將了解如何以本機(jī)方式保護(hù)、驗(yàn)證和授權(quán) Spring-Boot 應(yīng)用程序的用戶,并遵循框架的良好實(shí)踐,希望對(duì)大家有所幫助2023-11-11
Java零基礎(chǔ)教程之do-while循環(huán)語(yǔ)句實(shí)例
Java中的do-while循環(huán)是一種后測(cè)試循環(huán)語(yǔ)句,它類似于while循環(huán),但它先執(zhí)行循環(huán)體中的代碼,然后再進(jìn)行條件判斷,無(wú)論條件是否滿足,至少會(huì)執(zhí)行一次循環(huán)體中的代碼,這篇文章主要給大家介紹了關(guān)于Java零基礎(chǔ)教程之do-while循環(huán)語(yǔ)句的相關(guān)資料,需要的朋友可以參考下2024-09-09

