Java文件字节输入流(FileInputSream)文件字节输出流(OutputStream),字符输入输出流(FileReader/FileWriter)
2017-07-22 00:42
851 查看
FileInputSream:读文件的过程
文件写入的过程
1.创建一个File类对象
2.创建一个FileInputStream对象
3.调用FileInputStream的方法,实现file文件的读取
4.关闭相应的流
FileOutputSream:写文件的过程
1.创建一个File对象
2.创建一个FileOutputStream输出流对象
3.将File对象作为FileOutputStream的构造器参数
4.写入文件:若输出的文件不存在,则创建一个文件;每次写入时,都覆盖原先的文件
5.关闭输出流
对文件进行复制
使用FileReader,FileWriter只能用于处理文本文件,因为FileReader,FileWriter是以字符的形式去读的,对于视频文件、音频文件、图像文件,只能使用字节流。
使用FileReader
复制文件
使用字节输入流、字节输出流将输入的字节流解码成字符流,读入程序;将程序中的字符流编码成字节流,输出
使用标准输入输出流测试BufferredReader
文件写入的过程
1.创建一个File类对象
2.创建一个FileInputStream对象
3.调用FileInputStream的方法,实现file文件的读取
4.关闭相应的流
public void testFileInputStream3(){ //将流读出到byte数组中 FileInputStream fis=null; File file=null; try { file =new File("bast.txt"); fis=new FileInputStream(file); byte[] b=new byte[20]; //读取到的数据要写入的数组 int len; //记录每次读入到数组中的字节长度 while((len=fis.read(b))!=-1){ // for(int i = 0;i<len;i++) // System.out.print(i +":"+ (char) b[i]); String str = new String(b,0,len); System.out.println(len); System.out.print(str); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ if(fis!=null) try { fis.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
FileOutputSream:写文件的过程
1.创建一个File对象
2.创建一个FileOutputStream输出流对象
3.将File对象作为FileOutputStream的构造器参数
4.写入文件:若输出的文件不存在,则创建一个文件;每次写入时,都覆盖原先的文件
5.关闭输出流
public void testFileOutputStream(){ //1.创建一个File对象 File file=new File("hello.txt"); //2.创建一个FileOutputStream输出流对象 FileOutputStream fos=null; try { //3.将File对象作为FileOutputStream的构造器参数 fos=new FileOutputStream(file); //4.写入文件:若输出的文件不存在,则创建一个文件;每次写入时,都覆盖原先的文件 fos.write(new String("I love you , stillman!").getBytes()); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ try { //5.关闭输出流 fos.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
对文件进行复制
public void testFileInputOutput(){ long start=System.currentTimeMillis(); FileInputStream fis=null; FileOutputStream fos=null; File f1=new File("hello.txt"); File f2=new File("hello-tmp.txt"); // File f1=new File("D:/技术视频/Java/第10章:IO(day15-day16)/day15/流的分类结构图.JPG"); // File f2=new File("D:/技术视频/Java/第10章:IO(day15-day16)/day15/流的分类结构图-copy.JPG"); try { fis=new FileInputStream(f1); fos=new FileOutputStream(f2); int len=0; byte[] bs=new byte[10]; while((len=fis.read(bs))!=-1){ fos.write(bs, 0, len); //错误写法:fos.write(bs, 0, bs.len());或者fos.write(bs); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally{ if(fis!=null) try { fis.close(); } catch (IOException e) { e.printStackTrace(); } if(fos!=null) try { fos.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } long end=System.currentTimeMillis(); System.out.println("执行时间:" + (end-start)); }
使用FileReader,FileWriter只能用于处理文本文件,因为FileReader,FileWriter是以字符的形式去读的,对于视频文件、音频文件、图像文件,只能使用字节流。
使用FileReader
@Test public void testFileReader(){ FileReader fr=null; File file=null; file=new File("bast.txt"); try { fr=new FileReader(file); int len=0; char[] c=new char[24]; while((len=fr.read(c))!=-1){ String str=new String(c,0,len); System.out.print(str); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } if(fr!=null) try { fr.close(); } catch (IOException e) { e.printStackTrace(); } }
复制文件
@Test public void testFileCopy(){ FileReader fr=null; FileWriter fo=null; File file=null; File file_cp=null; try { file=new File("bast.txt"); file_cp=new File("bast_cp.txt"); fr=new FileReader(file); fo=new FileWriter(file_cp); int len=0; char[] c=new char[24]; while((len=fr.read(c))!=-1){ fo.write(c,0,len); } } catch (IOException e) { e.printStackTrace(); } if(fr!=null) try { fr.close(); } catch (IOException e) { e.printStackTrace(); } if(fo!=null) try { fo.close(); } catch (IOException e) { e.printStackTrace(); } }
使用字节输入流、字节输出流将输入的字节流解码成字符流,读入程序;将程序中的字符流编码成字节流,输出
@Test public void testInputOutStreamReader(){ long start=System.currentTimeMillis(); BufferedWriter bw = null; BufferedReader br = null; try { File f1=new File("hello.txt"); FileInputStream fis=new FileInputStream(f1); InputStreamReader isr=new InputStreamReader(fis,"GBK"); br=new BufferedReader(isr); File f2=new File("hello-tmp2.txt"); FileOutputStream fos=new FileOutputStream(f2); OutputStreamWriter osw=new OutputStreamWriter(fos, "unicode"); bw=new BufferedWriter(osw); String str; while((str=br.readLine())!=null){ System.out.println(str); bw.write(str); bw.newLine(); bw.flush(); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally{ if(br!=null) try { br.close(); } catch (IOException e) { e.printStackTrace(); } if(bw!=null) try { bw.close(); } catch (IOException e) { e.printStackTrace(); } } long end=System.currentTimeMillis(); System.out.println("执行时间:" + (end-start)); }
使用标准输入输出流测试BufferredReader
@Test public void testSTDStream(){ long start=System.currentTimeMillis(); BufferedReader br = null; try { InputStream is=System.in; InputStreamReader isr=new InputStreamReader(is); br = new BufferedReader(isr); String str = null; while(true){ System.out.println("请输入:"); str=br.readLine(); if(str.equalsIgnoreCase("e") || str.equalsIgnoreCase("exit")){ break; } String str1=str.toUpperCase(); System.out.println(str1); } } catch (IOException e1) { e1.printStackTrace(); }finally{ try { if(br!=null) br.close(); } catch (IOException e) { e.printStackTrace(); } } long end=System.currentTimeMillis(); System.out.println("执行时间:" + (end-start)); }
相关文章推荐
- 字符输入输出流:java.io.FileReader和java.io.FileWriter
- 【Java.IO】I/O 字节 <-> 字符转换流 —— InputStreamReader,OutputStreamWriter(FileReader,FileWriter)
- 输入输出流(IO)—文件字符流(FileReader & FileWriter)的基本操作及应用
- 牛客网Java刷题知识点之输入流、输出流、字节流、字符流、字节流的抽象基类(InputStream、OutputStream)、字符流的抽象基类(Reader、Writer)、FileWriter、FileReader
- Java IO 之 FileReader FileWriter 实现字符文件的复制(处理FileWriter新建文件失败的问题)
- JavaIO 总结笔记<三> 基本字节字符输入输出流和文件复制
- Java笔记(7)-输入、输出流、File类、InputStream、Reader、文件字节流、文件字符流、缓冲流、随机流、数据流、对象流、序列化和对象克隆、Scanner解析文件、Console流
- Java中文件字符流FileReader和FileWriter小结
- 字符输出流FileWriter和字符输入流FileReader
- Java学习笔记之输入输出流(一) File、文件字节流、文件字符流
- 字符输入流与字符输出流中FileWriter和FileReader介绍-黑马程序员
- java 字符流实现文件读写操作(FileReader-FileWriter)
- JAVA笔记11__File类/File类作业/字节输出流、输入流/字符输出流、输入流/文件复制/转换流
- Java文件字节流和字符流FileInputStream,FileOutputStream,FileReader,FileWriter
- java中OutputStream字节流与字符流InputStreamReader 每一种基本IO流BufferedOutputStream,FileInputStream,FileOutputStream,BufferedInputStream,BufferedReader,BufferedWriter,FileInputStream,FileReader,FileWriter,InputStr
- 牛客网Java刷题知识点之字节流练习之从A处复制文本文件到B处(FileReader、FileWriter )、复制文本文件的原理图解
- JAVA基础再回首(二十二)——转换流概述及用法、简化写法FileWriter和 FileReader、字符缓冲流及特殊用法、字节流字符流复制文件方法总结
- Java 字符流实现文件读写操作(FileReader-FileWriter)
- Java 字符流实现文件读写操作(FileReader-FileWriter)
- 字符拷贝和字节拷贝文件对比(FileInputStream,FileOutputStream, FileReader, FileWriter)