输入/输出流

http://429564140.iteye.com/blog/2106060

1.输入流代表从外设流入到计算机内存的数据序列,输出流代表计算机内存向外设的数据序列。 
根据数据类型不同,流分为两类:一种是字节流(Byte流),一次读写8位二进制数,InputStream和OutputStream设计成字节流;一种是字符流(Character流),一次读写16位二进制数,Reader和Writer为字符流设计。 
2.FileInputStream和FileOutputStream是InputStream和OutputStream的直接子类,负责对本地磁盘文件的顺序读写工作;
 

Java代码   收藏代码
  1. import java.io.File;  
  2. import java.io.FileInputStream;  
  3. import java.io.FileNotFoundException;  
  4. import java.io.FileOutputStream;  
  5. import java.io.IOException;  
  6.   
  7.   
  8. public class testFileInOutputStream {  
  9.     public static void main(String[] args) throws IOException {  
  10.         File file=new File("E:/test","file.txt");//文件对象  
  11.         FileInputStream fis=new FileInputStream(file);//文件输入流  
  12.         byte[]b=new byte[(int)file.length()];//定义一个字节数组  
  13.         fis.read(b);//文件输入流将内容写入到字节数组中  
  14.         File copyFile=file.createTempFile("CopyFile"".txt",new File("E:/"));//在E:/test的路径下创建文件名CopyFile,扩展名.txt的临时文件  
  15.         FileOutputStream fos=new FileOutputStream(copyFile);//创建文件输出流  
  16.         fos.write(b);//将数组b中的内容写入到流中  
  17.         fos.close();//关闭  
  18.         fis.close();//关闭  
  19.     }  
  20. }  


结果在E:/test下产生了一个新的文件,内容跟原先的内容一样。但是后缀名改为doc后里面的内容是乱码,应该是编码的问题
 
3.InputStreamReader和OutputStreamWriter是由字节流转换成字符流的通道。使用方法跟FileInputStream类似。以下是一个关于流的简单输入和输出 

Java代码   收藏代码
  1. public class testStream {  
  2.     public static void main(String[] args) {  
  3.         int c;  
  4.         InputStreamReader in=new InputStreamReader(System.in);//创建输入流  
  5.         OutputStreamWriter out=new OutputStreamWriter(System.out);//创建输出流  
  6.         System.out.println("输入一行字符,回车结束!");  
  7.         try {  
  8.             while((c=in.read())!='\n')//c=in.read(),c就是从输入流中获得的值  
  9.                 out.write(c);//将c写到输出流中  
  10.             out.close();//关闭输出流,若不关闭屏幕上什么也没有  
  11.             in.close();  
  12.         } catch (IOException e) {  
  13.             e.printStackTrace();  
  14.             System.out.println("输入流有误!");  
  15.         }  
  16.     }  
  17.   
  18. }  


4.FileReader和FileWriter的使用 

Java代码   收藏代码
  1. System.out.println("请输入留言!");  
  2.         int n;  
  3.         InputStreamReader in=new InputStreamReader(System.in);  
  4.         File f=new File("E:/test","a.txt");  
  5.         FileReader fr=new FileReader(f);  
  6.         FileWriter fw=new FileWriter(f,true);//此处设置为true,向文件尾部追加内容,如果不加则是覆盖原先的内容  
  7.         while((n=in.read())!='\n'){  
  8.             fw.write(n);//将内容写入到文件输出流中  
  9.         }  
  10.         in.close();  
  11.         fw.close();  
  12.                 char[]ch=new char[(int)f.length()];//查看文件中内容  
  13.         fr.read(ch);//将文件内容写入到ch中  
  14.         for(int i=0;i<ch.length;i++){  
  15.             System.out.println(ch[i]);  
  16.         }  
  17.         fr.close();  


5.BufferedReader和BufferedWriter缓存字符流,可以提高字符流的处理效率

Java代码   收藏代码
  1. //缓存System.in字符输入流  
  2.     BufferedReader bfr=new BufferedReader(new InputStreamReader(System.in));  
  3.     //缓存FileWriter字符输出流  
  4.     BufferedWriter bfw=new BufferedWriter(new FileWriter(new File("E:/test","a.txt")));  
  5.     String input=null;  
  6.     //每读一行进行一次写入动作  
  7.     System.out.println("输入字符串,End结束");  
  8.     while(!(input=bfr.readLine()).equals("end")){  
  9.         bfw.write(input);//将读到的内容写到输出流中  
  10.         bfw.newLine();  
  11.     }  
  12.     bfr.close();  
  13.     bfw.close();  


6.将一个文件中的内容一行一行读取的例子: 

Java代码   收藏代码
  1. //按行顺序第读取一个可读文件的内容  
  2.         String s;//声明一个变量  
  3.         FileInputStream is;//声明FileInputStream变量  
  4.         InputStreamReader ir;//声明InputStreamReader变量  
  5.         BufferedReader in;//声明BufferedReader变量  
  6.         try{  
  7.             is=new FileInputStream("E:\\test\\a.txt");//创建FileInputStream对象  
  8.             ir=new InputStreamReader(is);//创建InputStreamReader对象  
  9.             in=new BufferedReader(ir);//创建BufferedReader对象  
  10.             while((s=in.readLine())!=null){//判断下一行不为空  
  11.                 System.out.println("Read:"+s);  
  12.             }  
  13.         }catch(FileNotFoundException e){//文件找不到异常  
  14.                 System.out.println("File not found!");  
  15.                 System.exit(-2);  
  16.             }catch(IOException e){  
  17.                 System.out.println("error:"+e);  
  18.                 System.exit(-3);  
  19.             }  

猜你喜欢

转载自nethub2.iteye.com/blog/2269112
今日推荐