InputStream和OutputStream是抽象类,是所有字节输入流和输出流的父类。这里,我们首先要分清楚两个概念:
- InputStream(输入流):输入流是用来读入数据的。- - - > > >读入
- OutputStream(输出流):输出流是用来写出数据的。- - - > > >写出
FileInputStream 从文件系统中的某个文件中获得输入字节。
文件输出流——FileOutputStream
文件输出流是用于将数据写入到文件中。
从文件中读取数据:
import java.io.FileInputStream;
/**
* FileInputStream:节点流(低级流),从文件中读入数据
* @author Administrator
*
*/
public class FISDemo01 {
public static void main(String[] args){
String content=null;
try {
int size=0;
byte[] buffer=new byte[1024];
FileInputStream fis=new FileInputStream("FOSDemo.txt");
while((size=fis.read(buffer))!=-1){
content=new String(buffer, 0, size);
System.out.println(content);
}
fis.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
向文件中写出数据:
import java.io.FileOutputStream;
/**
* FileOutputStream:节点流(低级流),向文件中写出数据
* @author Administrator
*
*/
public class FOSDemo01 {
public static void main(String[] args){
try {
String font="输出流是用来写入数据的!";
FileOutputStream fos = new FileOutputStream("FOSDemo.txt");
fos.write(font.getBytes());
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
import java.io.FileInputStream;
import java.io.FileOutputStream;
/**
* 使用文件输入流和文件输出流实现文件的复制
* @author Administrator
*
*/
public class SummaryFISAndFOS {
public static void main(String[] args){
/**
* 1.先将文件中的内容读入到输入流中
* 2.将输入流中的数据通过输出流写入到目标文件中
* 3.关闭输入流和输出流
*/
try {
long begin=System.currentTimeMillis();
FileInputStream fis=new FileInputStream("FOSDemo.txt");
FileOutputStream fos=new FileOutputStream("FISAndFOSDest.txt");
byte[] buffer=new byte[10240];
int size=0;
while((size=fis.read(buffer))!=-1){
fos.write(buffer, 0, size);
}
fis.close();
fos.close();
long end=System.currentTimeMillis();
System.out.println("使用文件输入流和文件输出流实现文件的复制完毕!耗时:"+(end-begin)+"毫秒");
} catch (Exception e) {
e.printStackTrace();
}
System.exit(0);
}
}
package pb.io.file;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
public class ReadImage {
public static void main(String[] args) {
try {
FileInputStream fis=new FileInputStream("c:/a.jpg");
FileOutputStream fos=new FileOutputStream("c:/b.jpg");
//关键是这一步,建立一个缓冲数组,对于提高复制效率十分有效
int count;
byte[]temp=new byte[1000];//数组的长度可以酌情自定义
while((count=fis.read(temp))!=-1){//只要缓冲数组读取的数据不为空,就继续写入
fos.write(temp,0,count);
}
fos.flush();//清空缓存
fis.close();
fos.close();
System.out.println("拷贝成功!");
} catch (IOException e) {
System.out.println(e.toString());;
}
}
}