如何操作文件中的数据?
使用IO流对象,而且文件数据都是字节存在。
(1)InputStream
|----FileInputStream
|----FilterInputStream
|----BufferedInputStream
(2) OutputStream
|----FileOutputStream
|----FilterOutputStream
|----BufferedOutputStream
但是,对于文本文件,想要操作数据时,就得用转换流,即字节和字符的桥梁
什么时候使用转换流呢?
一种情况:操作文本数据时
第二种情况:需要指定的编码时
Reader
|----InputStreamReader:字节转成字符
|----FileReader(默认的编码)
|----BufferedReader
Writer
|----OutputStreamWriter:字符转成字节
|----FileWriter
|----BufferedWriter
例子:
/*要求:复制一幅图片
* 利用缓冲流对象 BufferedInputStream和BufferedOutputStream
*/
public class CopyPicture {
public static void main(String[] args) {
// TODO Auto-generated method stub
FileInputStream fis=null;
FileOutputStream fos=null;
try{
fis=new FileInputStream("F:\\java demo\\picture\\1.bmp");
BufferedInputStream bufin=new BufferedInputStream(fis);
fos=new FileOutputStream("F:\\java demo\\picture\\2.bmp");
BufferedOutputStream bufout=new BufferedOutputStream(fos);
byte[] bite=new byte[1024];
int len=0;
while((len=bufin.read(bite))!=-1){
bufout.write(bite,0,len);
bufout.flush();
}
}
catch(IOException e){
}finally{
try {
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
throw new RuntimeException();
}
try {
fis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
throw new RuntimeException();
}
}
}
}
使用IO流对象,而且文件数据都是字节存在。
(1)InputStream
|----FileInputStream
|----FilterInputStream
|----BufferedInputStream
(2) OutputStream
|----FileOutputStream
|----FilterOutputStream
|----BufferedOutputStream
但是,对于文本文件,想要操作数据时,就得用转换流,即字节和字符的桥梁
什么时候使用转换流呢?
一种情况:操作文本数据时
第二种情况:需要指定的编码时
Reader
|----InputStreamReader:字节转成字符
|----FileReader(默认的编码)
|----BufferedReader
Writer
|----OutputStreamWriter:字符转成字节
|----FileWriter
|----BufferedWriter
例子:
/*要求:复制一幅图片
* 利用缓冲流对象 BufferedInputStream和BufferedOutputStream
*/
public class CopyPicture {
public static void main(String[] args) {
// TODO Auto-generated method stub
FileInputStream fis=null;
FileOutputStream fos=null;
try{
fis=new FileInputStream("F:\\java demo\\picture\\1.bmp");
BufferedInputStream bufin=new BufferedInputStream(fis);
fos=new FileOutputStream("F:\\java demo\\picture\\2.bmp");
BufferedOutputStream bufout=new BufferedOutputStream(fos);
byte[] bite=new byte[1024];
int len=0;
while((len=bufin.read(bite))!=-1){
bufout.write(bite,0,len);
bufout.flush();
}
}
catch(IOException e){
}finally{
try {
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
throw new RuntimeException();
}
try {
fis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
throw new RuntimeException();
}
}
}
}