try case 异常语句
/*
* 自动关闭资源的try块
*/
public class FileInputStreamDemo3 {
public static void main(String[] args) {
try(FileInputStream fis = new FileInputStream("a.txt");
FileInputStream fis2 = new FileInputStream("a.txt")){
byte[] bys = new byte[1024];
int len = 0;
while((len = fis.read(bys)) != -1){
System.out.print(new String(bys,0,len));
}
//省略关闭资源操作
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
实现同一个项目路径下的文本文件的复制
package com.czz.test;
import java.io.FileInputStream;
import java.io.FileNotFoundException ;
import java.io.FileOutputStream;
public class CopyFileDemo {
public static void main(String[] args ) throws Exception {
// 创建源文件
FileInputStream fis = new FileInputStream( "a.txt" ); // 表示文件路径在当前项目下
// 创建目标文件
FileOutputStream fos = new FileOutputStream( "czz.txt" ); // 表示文件路径在当前项目下
byte [] bys = new byte [1024];
int len = 0;
while (( len = fis .read( bys )) != -1) {
fos .write( bys );
}
// 关闭输入输出字符流
fis .close();
fos .close();
}
}
实现不同路径下的文本文件的复制
package com.czz.test;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
public class CopyFileDemo {
public static void main(String[] args ) throws Exception {
// 创建源文件
FileInputStream fis = new FileInputStream( "a.txt" ); // 表示文件路径在当前项目下
// 创建目标文件
FileOutputStream fos = new FileOutputStream( "E:\\niling\\czz.txt" ); // 表示文件路径在 E:\\ niling 文件下
byte [] bys = new byte [1024];
int len = 0;
while (( len = fis .read( bys )) != -1) {
fos .write( bys );
}
// 关闭输入输出字符流
fis .close();
fos .close();
}
}
实现图片和Mp3的代码和上面的差不多,只需将修改为相应的图片或Mp3所在的文件路径即可.
BufferedOutputStream类与BufferedInputStream类
BufferedOutputStream:
构造方法:
BufferedOutputStream(OutputStream out)
通过包装一个字节输出流对象,使用默认的大小创建缓冲区流对象
BufferedOutputStream(OutputStream out,int size)
通过包装一个字节输出流对象,使用指定的大小创建缓冲区流对象
写方法:
void write(int b)
将一个字节写入缓冲区流
void write(byte[] b)
将一个字节数组写入缓冲区
void write(byte[] b,int off,int len)
将一个字节数组的一部分写入字节缓冲区流(不常用
缓冲区满,或者调用 flush 方法,或者关闭流,此时把缓冲区中的数据写出到节点流中
例:
package com.oldboyedu.test04;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
/*
* BufferedOutputStream(OutputStream out)
* BufferedOutputStream(OutputStream out, int size)//
*/
public class BufferedOutputStreamDemo1 {
public static void main(String[] args ) throws Exception {
//BufferedOutputStream(OutputStream out)
FileOutputStream fos = new FileOutputStream( "bos7.txt" ); //
BufferedOutputStream bos = new BufferedOutputStream( fos );
// bos.write(98);//b
// 缓冲流 , 写数据的方法 , 是直接将数据写到缓冲区 , 并不是流当中 .
// 有三种情况会刷新缓冲区 :
//1. 手动刷新
//2. 缓冲区满
//3. 流关闭
// 手动刷新缓冲区
bos .flush();
// 演示缓冲区满自动刷新
/*
for( int i = 0;i<8192;i++){
bos.write(98);
}
*/
// 关闭流是首先自动刷新缓冲区
bos .close();
fos .close();
}
}
BufferedInputStream
构造方法:
BufferedInputStream(InputStream in)
通过包装一个输入流,创建一个带默认缓冲区的字节输入流对象
BufferedInputStream(InputStream in,int size)
通过包装一个输入流,创建一个带指定缓冲区的字节输入流对象
读取数据:
int read()
从缓冲区中读取一个字节
int read(byte[] b)
从缓冲区中读取字节放到一个字节数组中
int read(byte[] b,int off,int len)
从缓冲区中读取字节,存放到数组的指定开始处,并指定读取长度(不常用)
例:
package com.oldboyedu.test04;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
/*
* BufferedInputStream(InputStream in)
* BufferedInputStream(InputStream in, int size)
*
*/
public class BufferedInputStreamDemo1 {
public static void main(String[] args ) throws Exception {
BufferedInputStream bis = new BufferedInputStream( new FileInputStream( "a.txt" ));
// 一次读一个字节
// int b = 0;
// while((b = bis.read()) != -1){
// System.out.print((char)b);
// }
// 一次读一个字节数组
byte [] bys = new byte [1024];
int len = 0;
while (( len = bis .read( bys )) != -1){
System. out .print( new String( bys ,0, len ));
}
// 释放资源
bis .close();
}
}
流的测试:
package com.oldboyedu.test05;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class StreamTest {
public static void main(String[] args ) throws Exception{
long start = System. currentTimeMillis ();
// test1();//701996
// test2();//1266
// test3();//6830
test4 (); //319
System. out .println(System. currentTimeMillis () - start );
}
// 缓冲字节流 , 一次读写一个字节数组
public static void test4() throws Exception{
BufferedInputStream bis = new BufferedInputStream( new FileInputStream( "c:/01.avi" ));
BufferedOutputStream bos = new BufferedOutputStream( new FileOutputStream( "c:/demo/04.avi" ));
byte [] bys = new byte [1024];
int len = 0;
while (( len = bis .read( bys )) != -1){
bos .write( bys , 0, len );
}
bis .close();
bos .close();
}
// 缓冲字节流 , 一次读写一个字节
public static void test3() throws Exception{
BufferedInputStream bis = new BufferedInputStream( new FileInputStream( "c:/01.avi" ));
BufferedOutputStream bos = new BufferedOutputStream( new FileOutputStream( "c:/demo/03.avi" ));
int b = 0;
while (( b = bis .read()) != -1){
bos .write( b );
}
bis .close();
bos .close();
}
// 基本字节流 , 一次读写一个字节数组
public static void test2() throws Exception{
// 封装源文件
FileInputStream fis = new FileInputStream( "c:/01.avi" );
// 封装目标文件
FileOutputStream fos = new FileOutputStream( "c:/demo/02.avi" );
// 循环读写数据
byte [] bys = new byte [1024];
int len = 0;
while (( len = fis .read( bys )) != -1){
fos .write( bys , 0, len );
}
// 释放资源
fos .close();
fis .close();
}
// 基本字节流 , 一次读写一个字节
public static void test1() throws Exception{
// 封装源文件
FileInputStream fis = new FileInputStream( "c:/01.avi" );
// 封装目标文件
FileOutputStream fos = new FileOutputStream( "c:/demo/01.avi" );
// 循环读写数据
int b = 0;
while (( b = fis .read()) != -1){
fos .write( b );
}
// 释放资源
fis .close();
fos .close();
}
}