Java IO流(三)
字節(jié) 字符
輸入 InputStream Reader
輸出 OutputStream Writer
?
**********************字節(jié)寫(xiě)***********************************
FileOutputStream
1.public void write(int b) throws IOException
每次寫(xiě)1個(gè)字節(jié)
2.public void write(byte[] b) throws IOException
每次寫(xiě)1個(gè)字節(jié)數(shù)組
知識(shí)點(diǎn):
1. 寫(xiě)的時(shí)候 如果運(yùn)行2次,第二次還會(huì)創(chuàng)建一個(gè)新的文件,重新寫(xiě)(相當(dāng)于覆蓋)
建立通道的時(shí)候 傳入一個(gè)boolean類(lèi)型的變量 true 表示追加
2. 產(chǎn)生的文件的編碼方式 由 getBytes("utf-8") 決定
演示代碼:
package com.chapter13.演示字節(jié)寫(xiě);
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
/**
* 公司:藍(lán)橋軟件學(xué)院
* 作者:zhangzy
* 時(shí)間:2017年7月24日 上午9:37:41
* 功能:演示字節(jié)寫(xiě)
*/
public class TestFileOutputStream {
public static void main(String[] args) {
//一.建立通道
String s = "你好";
byte[] byteArr = null;
try {
byteArr = s.getBytes("utf-8");
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}
//寫(xiě)的時(shí)候 如果寫(xiě)入的文件不存在 會(huì)先創(chuàng)建這個(gè)文件
FileOutputStream fos = null;
try {
fos = new FileOutputStream("d:\\jidi16\\io\\HelloIO.txt",true);//true 追加
} catch (FileNotFoundException e) {
System.out.println("文件夾沒(méi)有找到");
e.printStackTrace();
System.exit(-1);
}
//二.利用write寫(xiě)
try {
//fos.write(65);
fos.write(byteArr);
} catch (IOException e) {
System.out.println("寫(xiě)入失敗");
e.printStackTrace();
}finally{
//三.關(guān)閉通道
if(fos!=null){
try {
fos.close();
} catch (IOException e) {
System.out.println("關(guān)閉fos通道失敗");
e.printStackTrace();
}
}
}
}
}
**********************字符寫(xiě)***********************************
FileWriter
常用方法
1. public void write(int b) throws IOException
每次寫(xiě)1個(gè)字符
2. public void write(char[] b) throws IOException
每次寫(xiě)1個(gè)字符數(shù)組
3. public void write(String s) throws IOException
每次寫(xiě)1個(gè)字符串
演示代碼:
package com.chapter13.演示字節(jié)寫(xiě);
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
/**
* 公司:藍(lán)橋軟件學(xué)院
* 作者:zhangzy
* 時(shí)間:2017年7月24日 上午9:54:57
* 功能:演示字符寫(xiě)
*/
public class TestFileWriter {
public static void main(String[] args) {
//一.建立通道
char c = '你';
char[] charArr = {'你','好','啊'};
String s = "你好世界";
//寫(xiě)的時(shí)候 如果寫(xiě)入的文件不存在 會(huì)先創(chuàng)建這個(gè)文件
FileWriter fos = null;
try {
fos = new FileWriter("d:\\jidi16\\io\\HelloIO.txt",true);//true 追加
} catch (IOException e) {
System.out.println("文件夾沒(méi)有找到");
e.printStackTrace();
System.exit(-1);
}
//二.利用write寫(xiě)
try {
//fos.write(c);//每次寫(xiě)一個(gè)字符
//fos.write(charArr);//每次寫(xiě)一個(gè)字符數(shù)組
fos.write(s);//每次寫(xiě)一個(gè)字符串
} catch (IOException e) {
System.out.println("寫(xiě)入失敗");
e.printStackTrace();
}finally{
//三.關(guān)閉通道
if(fos!=null){
try {
fos.close();
} catch (IOException e) {
System.out.println("關(guān)閉fos通道失敗");
e.printStackTrace();
}
}
}
}
}
?
***********************************文件復(fù)制***********************************
原理: 讀進(jìn)來(lái) 馬上把它寫(xiě)出去
演示代碼:
package com.chapter13.演示字節(jié)寫(xiě);
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* 公司:藍(lán)橋軟件學(xué)院
* 作者:zhangzy
* 時(shí)間:2017年7月21日 下午2:10:56
* 功能:演示文件復(fù)制
*/
public class TestFileCopy {
public static void main(String[] args) {
//一.建立通道
FileInputStream fis = null;
int b;
try {
fis = new FileInputStream("d:\\jidi16\\io\\test.jpg");
} catch (FileNotFoundException e) {
System.out.println("文件沒(méi)有找到");
e.printStackTrace();
System.exit(-1);
}
FileOutputStream fos = null;
try {
fos = new FileOutputStream("d:\\jidi16\\io\\copy.jpg");
} catch (FileNotFoundException e1) {
System.out.println("文件夾不存在");
e1.printStackTrace();
}
byte[] byteArr = new byte[1024];
long startTime = System.currentTimeMillis();//獲取舉例1970年1月1日 00:00:00 的毫秒數(shù)
//二.利用read循環(huán)讀
//fis.read() 每次讀一個(gè)字節(jié) 把讀到的這1個(gè)字節(jié) 存到int類(lèi)型的低8位中
// read() 如果讀到了文件末尾 返回-1
try {
while((b=fis.read(byteArr))!=-1){
fos.write(byteArr);
}
} catch (IOException e) {
System.out.println("復(fù)制文件失敗");
e.printStackTrace();
}finally{
//三.關(guān)閉通道
if(fis!=null){
try {
fis.close();
} catch (IOException e) {
System.out.println("關(guān)閉fis通道失敗");
e.printStackTrace();
}
}
if(fos!=null){
try {
fos.close();
} catch (IOException e) {
System.out.println("關(guān)閉fos通道失敗");
e.printStackTrace();
}
}
long endTime = System.currentTimeMillis();//獲取舉例1970年1月1日 00:00:00 的毫秒數(shù)
System.out.println("一共使用了" + (endTime-startTime) + "毫秒");
System.out.println("復(fù)制完成");
}
}
}
?
轉(zhuǎn)載于:https://www.cnblogs.com/MrTanJunCai/p/9906826.html
總結(jié)
以上是生活随笔為你收集整理的Java IO流(三)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: sql server扫盲系列
- 下一篇: Javascript高级调试——cons