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();
}
}