字节流
1、概述
-
输入流
-
输出流
2、输入流InputStream
FileInputStream
- 从文件系统中的某个文件中获得输入字节,例如:复制、粘贴
- 用于读取诸如图像数据的原始字节流
- 常用方法:
- 代码示例一:
package com.imooc.file;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class FileInputDemo1 {
public static void main(String[] args) {
//创建一个FileInputStream对象
try {
FileInputStream fis=new FileInputStream("imooc.txt");
// int n=fis.read();
int n=0;
// while(n!=-1){
// System.out.print((char)n);
// n=fis.read();
// }
while((n=fis.read())!=-1){
System.out.print((char)n);
}
fis.close();
}catch (FileNotFoundException e) {
e.printStackTrace();
} catch(IOException e){
e.printStackTrace();
}
}
}
- 代码示例二:读取数据存放在数组中
package com.imooc.file;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class FileInputDemo2 {
public static void main(String[] args) {
// 创建一个FileInputStream对象
try {
FileInputStream fis = new FileInputStream("imooc.txt");
byte[] b=new byte[100];
//读取的数据存放在数组中
fis.read(b,0,5);
System.out.println(new String(b));
fis.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
3、输出流OutputStream
FileOutputStream
- 常用方法
2.代码示例一:
package com.imooc.file;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileOutputDemo {
public static void main(String[] args) {
FileOutputStream fos;
FileInputStream fis;
try {
fos = new FileOutputStream("imooc.txt",true);
fis=new FileInputStream("imooc.txt");
//写数据
fos.write(50);
fos.write('a');
//读数据
System.out.println(fis.read());
System.out.println((char)fis.read());
fos.close();
fis.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
- 代码示例二:文件拷贝
package com.imooc.file;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileOutputDemo1 {
public static void main(String[] args) {
// 文件拷贝
try {
FileInputStream fis=new FileInputStream("happy.gif");
FileOutputStream fos=new FileOutputStream("happycopy.gif");
int n=0;
byte[] b=new byte[1024];
//边读取边写入
while((n=fis.read(b))!=-1){
fos.write(b,0,n);
}
fis.close();
fos.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}
}
}
4、缓冲流
- 缓冲输入流BufferedInputStream
- 缓冲输出流BufferedOutputStream
- 代码示例:
package com.imooc.file;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class BufferedDemo {
public static void main(String[] args) {
try {
//文件输出流
FileOutputStream fos=new FileOutputStream("imooc.txt");
//缓冲输出流
BufferedOutputStream bos=new BufferedOutputStream(fos);
//字节输入流
FileInputStream fis=new FileInputStream("imooc.txt");
//缓冲输入流
BufferedInputStream bis=new BufferedInputStream(fis);
long startTime=System.currentTimeMillis();
bos.write(50);
bos.write('a');
//清空缓冲
bos.flush();
System.out.println(bis.read());
System.out.println((char)bis.read());
long endTime=System.currentTimeMillis();
System.out.println(endTime-startTime);
fos.close();
bos.close();
fis.close();
bis.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}