文件读写

来源:互联网 发布:如何在知乎添加话题 编辑:程序博客网 时间:2024/06/06 07:04

面向对象程序设计中,凡是数据输入输出操作都涉及到流。流本质上是字节序列的封装,因此又叫字节流。

字节流就是对二进制字节进行读写的对象。

除了字节流外,还有按一定编码格式以字符为单位进行操作的字符流、


字节流:最基本,任何数据。

字符流:作用有限,如不能使用字符流方式传播声音,图像,视频等。


1.编程,使用文件字符流建立一个文本文件,然后读取文件内容并显示在屏幕上。

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. package IO流;  
  2. import java.io.*;  
  3.   
  4. public class EXxalple1 {  
  5.   
  6.     public static void main(String[] args) {  
  7.         try{  
  8.             File file=new File("D:\\abc.txt");//构建文件对象  
  9.             FileWriter fileout=new FileWriter(file);  
  10.             fileout.write("第一行(文本文件内容)abcdrfg");  
  11.             fileout.write("\r\n第二行(文本文件内容)1234567...");//\r\n是回车和换行符  
  12.             fileout.write("\r\n第三行(文本文件内容)end");  
  13.             fileout.close();//关闭文件字符输出流  
  14.               
  15.             FileReader filein=new FileReader(file);  
  16.             int charcode;  
  17.             while((charcode=filein.read())!=-1){//读取流字符并判断是否到末尾  
  18.                 System.out.print((char)charcode);//在屏幕上显示该字符  
  19.             }  
  20.             filein.close();//关闭文件字符输入流  
  21.         }catch(Exception e){  
  22.             System.out.println("异常:"+e.getMessage());  
  23.         }  
  24.   
  25.     }  
  26.   
  27. }  
  28. /* 
  29. 输出结果: 
  30. 第一行(文本文件内容)abcdrfg 
  31. 第二行(文本文件内容)1234567... 
  32. 第三行(文本文件内容)end 
  33. */  

注意:构造FileWriter对象时,如果构造方法参数中的文件还没有建立,则会自动创建,如果存在则覆盖。而构造FileReader对象时,要求构造方法参数中的文件必须存在,否则会抛出FileNotFoundException(系统找不到指定文件)异常。


2.使用文件字节输入输出流编写文件复制程序。

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. package IO流;  
  2.   
  3. import java.io.FileInputStream;  
  4. import java.io.FileOutputStream;  
  5. import java.util.Scanner;  
  6.   
  7. import javax.imageio.stream.FileImageInputStream;  
  8.   
  9.   
  10. public class Example2 {  
  11.   
  12.     public static void main(String[] args) {  
  13.         try{  
  14.             Scanner scan=new Scanner(System.in);  
  15.             System.out.println("请输入含有路径的源文件名:");  
  16.             String source=scan.next();  
  17.             FileInputStream input=new FileInputStream(source);  
  18.             System.out.println("请输入含有路径的目标文件名:");  
  19.             String target=scan.next();  
  20.             FileOutputStream output=new FileOutputStream(target);  
  21.             int readbyte;  
  22.             while((readbyte=input.read())!=-1)  
  23.             {  
  24.                 output.write(readbyte);  
  25.             }  
  26.             System.out.println("----已成功把源文件复制到目标文件!");  
  27.             input.close();  
  28.             output.close();  
  29.         }  
  30.         catch(Exception e){  
  31.             System.out.println("异常:"+e.getMessage());  
  32.         }  
  33.         finally{  
  34.             System.out.println("----程序结束");  
  35.         }  
  36.   
  37.     }  
  38.   
  39. }  
  40. /* 
  41. 输出结果: 
  42.     请输入含有路径的源文件名: 
  43.     D:\abc.txt 
  44.     请输入含有路径的目标文件名: 
  45.     D:\abcdf.txt 
  46.     ----已成功把源文件复制到目标文件! 
  47.     ----程序结束     
  48. */  


3.修改2号题目,设置文件对话框来选定需要复制的文件。

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. package IO流;  
  2.   
  3. import java.io.FileInputStream;  
  4. import java.io.FileOutputStream;  
  5. import java.util.Scanner;  
  6.   
  7. import javax.imageio.stream.FileImageInputStream;  
  8. import javax.swing.JFileChooser;  
  9. import javax.swing.JOptionPane;  
  10.   
  11.   
  12. public class Example2 {  
  13.   
  14.     public static void main(String[] args) {  
  15.         try{  
  16.             JFileChooser chooser=new JFileChooser();  
  17.             int returnVal=chooser.showOpenDialog(null);  
  18.             FileInputStream input=new FileInputStream(chooser.getSelectedFile());  
  19.             JFileChooser chooser2=new JFileChooser();  
  20.             int returnVal2=chooser2.showOpenDialog(null);  
  21.             FileOutputStream output=new FileOutputStream(chooser2.getSelectedFile());  
  22.             int readbyte;  
  23.             while((readbyte=input.read())!=-1)  
  24.             {  
  25.                 output.write(readbyte);  
  26.             }  
  27.             if(returnVal2==JFileChooser.APPROVE_OPTION){  
  28.                 JOptionPane.showMessageDialog(null,"已成功将"+chooser.getSelectedFile()+"复制到"+chooser2.getSelectedFile());  
  29.             }  
  30.             input.close();  
  31.             output.close();  
  32.         }  
  33.         catch(Exception e){  
  34.             System.out.println("异常:"+e.getMessage());  
  35.         }  
  36.         finally{  
  37.             System.out.println("----程序结束");  
  38.         }  
  39.   
  40.     }  
  41.   
  42. }  
输出结果:
0 0
原创粉丝点击