Java中文亂碼,IO流,讀取,字符輸出輸入流,創(chuàng)建,復(fù)制或剪切效果,追加【詩書畫唱】

在項(xiàng)目的相對路徑下新建一個(gè)txt文件,內(nèi)容為你對IO流字符流的總結(jié),使用IO流讀取該文件的內(nèi)容顯示在控制臺


package createFile;
import java.io.*;
import java.sql.*;
import java.util.Scanner;
public class io {
//個(gè)人心得:在最大,最前面的位置設(shè)置靜態(tài)的Connetion鏈接,
// 方便后面的調(diào)用等。
static Connection con=DBUtilsPreparedStatement.getCon();
public static void main(String[] args)throws Exception {
File wenjian=new File("xiangDui.txt");
// if(wenjian.exists()){//用exists判斷這個(gè)文件是否存在
// //如果存在就delete用刪除掉,防止存在的文件中有內(nèi)容
// wenjian.delete();
// }//用createNewFile創(chuàng)建文件
wenjian.createNewFile();
// ————————————————————
// 下面是把內(nèi)容寫入
// 自己建的或本身就有的文件
String neiRong="IO is importment";
FileWriter xieRu=new FileWriter(wenjian);
//
//寫入文件(就像用吸管喝奶茶)的時(shí)候就是要聲明
//write(寫),flush(沖),close(關(guān)),每次
// 用吸管喝以口奶茶時(shí)都有奶茶(流體)沖到嘴巴中之后嘴巴關(guān)閉
xieRu.write(neiRong);
xieRu.flush();
//
// flush 英[fl??]
// 美[fl??]
// 沖(抽水馬桶); (用水) 沖洗凈,沖洗;
//
xieRu.close();
// ——————————————————————
// 下面是讀取獲取自己寫的或本身就有的文件,
// 之后用System.out.print打印出讀取得內(nèi)容:
FileReader duDu=new FileReader(wenjian);
//讀取文件可以一個(gè)字符一個(gè)字符的讀,
//也可以一次讀取多個(gè)字符 ,
//讀取的時(shí)候不用flush清空管道,
// 只有寫入的時(shí)候flush清空管道
char [] shuZu=new char[10];
int xiaBiao;
while((xiaBiao=duDu.read(shuZu))!=-1){
System.out.print(new String(shuZu,0,xiaBiao));
// new String(shuZu,0,xiaBiao):
// 把一個(gè)字節(jié)數(shù)組by從0取到xiaBiao,
// 取出來之后轉(zhuǎn)換成String類型
}
duDu.close();
// 讀取和寫入都最后要用close
}
}




防止中文亂碼的方法:

使用File對象在項(xiàng)目根目錄創(chuàng)建一個(gè)aa.txt的文件,使用字符輸出流將內(nèi)容”一閃一閃亮晶晶,漫天都是小星星”輸出到該文件中


package createFile;
import java.io.*;
public class zhuiJiaRoot {
public static void main(String[] args) throws Exception{
File wenjian=new File("src//aa.txt");
wenjian.createNewFile();
//輸出流(追加內(nèi)容),zhuiJia:追加
FileWriter xieRu=new FileWriter(wenjian , true);
String neiRong="一閃一閃亮晶晶,漫天都是小星星";//聲明內(nèi)容
xieRu.write(neiRong);//寫出數(shù)據(jù)
xieRu. flush();//清空管道
xieRu. close();//關(guān)閉鏈接"
//Writer為字符輸出流
//Reader為字符輸入流
System.out.println("追加成功!請鼠標(biāo)右鍵點(diǎn)\n"
+ "項(xiàng)目文件來刷新文件等");
}
}



在相對目錄中新建.txt文件追加內(nèi)容到里面:

package createFile;
import java.io.*;
public class xieRu {
public static void main(String[] args) throws Exception{
File wenjian=new File("zhuiJia.txt");
wenjian.createNewFile();
//輸出流(追加內(nèi)容),zhuiJia:追加
FileWriter xieRu=new FileWriter(wenjian , true);
String neiRong="給詩書畫唱一鍵三連和關(guān)注";//聲明內(nèi)容
xieRu.write(neiRong);//寫出數(shù)據(jù)
xieRu. flush();//清空管道
xieRu. close();//關(guān)閉鏈接"
System.out.println("追加成功!請鼠標(biāo)右鍵點(diǎn)\n"
+ "項(xiàng)目文件(就是最大,最外面的目錄,\n"
+ "比如[file文件和IO流]\n"
+ "的[refresh],來刷新文件等");
}
}



制作復(fù)制效果

package createFile;
?
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;
/**個(gè)人的心得:
?* 文件復(fù)制功能:
?* 從一個(gè)輸入流中讀取數(shù)據(jù),然后通過輸出流寫入目標(biāo)位置
?*一邊讀,一邊寫(意思就是copy("(要復(fù)制的原文件路徑)"
?*,"(要復(fù)制的新的和原文件內(nèi)容一致的路徑)")
?*/
public class copyXiaoGuo {
?
public static void main(String[] args) {
System.out.println("開始復(fù)制...");
copyFangFa("zhuiJia.txt","zhuiJia2.txt");
System.out.println("復(fù)制成功!");
}
// copyFangFa:復(fù)制方法(自己封裝和命名的方法)
// target 英[?tɑ?ɡ?t]
// 美[?tɑ?rɡ?t]
// n. 目標(biāo);?
// src:源
private static void copyFangFa(String yuanLaiWenJian,String fuZhiWenJian) {
//創(chuàng)建源文件,和目標(biāo)文件:
File srcFile = new File(yuanLaiWenJian);
File targetFile = new File(fuZhiWenJian);
//// yuanLaiWenJian:原來的文件
// fuZhiWenJian:復(fù)制的文件
//創(chuàng)建輸入輸出流
InputStream in =? null;
OutputStream out = null;
try {
in = new FileInputStream(srcFile);
out = new FileOutputStream(targetFile);
byte[] byteShuZu = new byte[1024];
int len = -1;
while((len = in.read(byteShuZu))!=-1) {
out.write(byteShuZu,0,len);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
if(in != null) in.close();
if(out != null) out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
?
}





使用File對象在項(xiàng)目根目錄下創(chuàng)建一個(gè)bb.txt的文件,使用字符輸入流將aa.txt的內(nèi)容讀取出來后在內(nèi)容后追加內(nèi)容”明天會更好”

package createFile;
import java.io.*;
import java.sql.*;
import java.util.Scanner;
public class shuLuLiuZhuiJia {
static Connection con=DBUtilsPreparedStatement.getCon();
public static void main(String[] args)throws Exception {
File aaWenjian=new File("src//aa.txt");
FileReader duQu=new FileReader(aaWenjian);
// duQu:讀取
char [] shuZu=new char[100];
// 100為要讀取的內(nèi)容的字節(jié)長度
int xiaBiao;
while((xiaBiao=duQu.read(shuZu))!=-1){
System.out.print(new String(shuZu,0,xiaBiao));
File wenjian=new File("src//bb.txt");
wenjian.createNewFile();
FileWriter xieRu=new FileWriter(wenjian);
xieRu.write(new String(shuZu,0,xiaBiao));
xieRu.flush();
xieRu.close();
}
duQu.close();
File bbWenjian=new File("src//bb.txt");
bbWenjian.createNewFile();
//輸出流(追加內(nèi)容),zhuiJia:追加
FileWriter xieRu=new FileWriter(bbWenjian , true);
String neiRong="明天會更好";//聲明內(nèi)容
xieRu.write(neiRong);//寫出數(shù)據(jù)
xieRu. flush();//清空管道
xieRu. close();//關(guān)閉鏈接"
//Writer為字符輸出流
//Reader為字符輸入流
System.out.println("\n追加成功!請鼠標(biāo)右鍵點(diǎn)\n"
+ "項(xiàng)目文件來刷新文件等");
}
}



制作剪切效果
剪切(電腦術(shù)語)bai是指把你選中的du信息放入到剪切板中,后zhi續(xù)操作一般是“粘dao貼”,在一個(gè)新地方完成“粘貼”步驟后,原來地方的信息自動刪除,剪切板中的信息會在新地方中出現(xiàn)。
簡言之,假設(shè)有兩個(gè)文件夾甲、乙,在甲文件夾中有信息A。打開甲文件夾,將信息A剪切,然后打開乙文件夾,選擇“粘貼”,那么信息A就從甲文件夾中消失,它跑到了乙文件夾中。



package createFile;
import java.io.*;
public class jianQieXiaoGuo {
// 個(gè)人習(xí)慣的命名方法規(guī)則:
// copyFangFa_1在copyFangFa里面被調(diào)用,
// XXX_1都在XXX里面
? ? public static void copyFangFa_1(File yuanLai, File Xin)?
? ? throws IOException {
//
//buffered 英[?b?f?d]
//美[?b?f?rd]
//v. 減少,減緩(傷害); 保護(hù); 使不受…的侵害; 緩沖存儲; 緩存;
//
? ?
? ? ? ? BufferedInputStream huanChongLiuShuRuLiu =?
new BufferedInputStream(new FileInputStream(yuanLai));
? ? ? ? BufferedOutputStream huanChongShuChuLiu =
?new BufferedOutputStream(new FileOutputStream(Xin));
? ? ? ? int xiaBiao = 0;
? ? ? ? byte[] ziJieShuZu = new byte[1024];
? while ((xiaBiao = huanChongLiuShuRuLiu.read(ziJieShuZu)) != -1) {
? huanChongShuChuLiu.write(ziJieShuZu, 0, xiaBiao);
? ? ? ? }
? ? ? ? huanChongLiuShuRuLiu.close();
? ? ? ? huanChongShuChuLiu.close();
? ? }
? ? public static void copyFangFa(File yuanLai,
? ? File xin) throws Exception {
? ? ? ? if (!xin.exists()) {
? ? ? ? ? ? xin.mkdirs();
? // mkdir:創(chuàng)建指定的一個(gè)目錄,
//mkdirs:可創(chuàng)建多層原來不存在的目錄(即多級目錄)
? ? ? ? }
? ? ? ? File[] shuZu = yuanLai.listFiles();
? ? ? ? for (int i = 0; i < shuZu.length; i++) {
? ? ? ? ? ? if (shuZu[i].isFile()) {
? ?copyFangFa_1(shuZu[i], new File(xin.getPath()?
? ?+ "//" + shuZu[i].getName()));
? ? ? ? ? ? } else?
? ? ? ? ? ? {// 此處"\\"或?qū)懗?#34;//"等都可以,僅適用于windows平臺,
//? ? ? ? ? ? 若想實(shí)現(xiàn)通用,可將其改為separator
//? ? ? ? ? ? separator 英[?sep?re?t?(r)]
//? ? ? ? ? ? 美[?sep?re?t?r]
//? ? ? ? ? ? n. 分離器; 分選機(jī);
?copyFangFa(shuZu[i], new File(xin.getPath()?
+ "//" + shuZu[i].getName()));
? ? ? ? ? ? }
? ? ? ? }
? ? }
? ? // 創(chuàng)建刪除方法,復(fù)制完成后刪除文件
//? ? chuanRuWenJian:傳入文件
//? ? shanChuFangFa:刪除方法
? ? public static void shanChuFangFa(File chuanRuWenJian) {
? ? ? ? if (chuanRuWenJian.isFile()) {
? ? ? ? ? ? chuanRuWenJian.delete();
? ? ? ? } else {
? ? ? ? ? ? File[] shuZu = chuanRuWenJian.listFiles();
? ? ? ? ? ? for (int i = 0; i < shuZu.length; i++) {
? ? ? ? ? ? ? ? shanChuFangFa(shuZu[i]);
? ? ? ? ? ? }
? ? ? ? ? ? chuanRuWenJian.delete();
? ? ? ? }
? ? }
? ? public static void main(String[] args) throws Exception {
? ? ? ??
? ? ? ? File yuanLai = new File("D://原來");
? ? ? ? // File yuanLai = new File("OldPath");
//? ? ? ? "OldPath":舊的文件路徑
? ? ? ? File xin = new File("D://新");
//? ? ? ? File xin = new File("NewPath");
// "NewPath":新的文件路徑
? ? ? ? copyFangFa(yuanLai, xin);
? ? ? ? System.out.println("\n原來的文件夾中的文件復(fù)制"
? ? ? ? + "\n到新文件夾中完成");
? ? ? ? shanChuFangFa(yuanLai);
? ? ? ? System.out.println("\n\n原來的文件夾的文件刪除完成");
? ? ? ? System.out.println("\n\n剪切完成");
?
? ? }
}





執(zhí)行后:


