Java基础:IO基础

示例代码:

字节流:处理字节的输入和输出:InputStream 和OutputStream顶端的两个抽象类

  1. //读取控制台输入
  2. import java.io.*;    //导入java,io包
  3.  
  4. class ReadBytes{
  5.     public static void main(String[] args)throws IOException{
  6.         byte[] data =new byte[10];
  7.         
  8.         System.out.println("Enter some characters.");
  9.         System.in.read(data);          //从键盘读取一个字节数组
  10.         
  11.         System.out.println("you entered: ");
  12.         for(int i=0;i<data.length;i++){
  13.             System.out.print((char)data[i]+"\t");
  14.         }
  15.     }
  16. }
  17. ---------------------------------------------------------------------------------------
  18. //写入控制台输出
  19. class WriteDemo{
  20.     public static void main(String[] args){
  21.         int b;
  22.         b='X';
  23.         System.out.write(b);  //向控制台写入一个字节
  24.         System.out.write('\n');
  25.     }
  26. }
  27. -----------------------------------------------------------------
  28. 从文件读取
  29. import java.io.*;          //导入io包
  30.  
  31. class ShowFile{
  32.     public static void main(String[] args){
  33.         int i;
  34.         FileInputStream fin=null;   //使用FileInputStream对象读取文件
  35.         
  36.         if(args.length!=1){
  37.             System.out.println("Usage:ShowFile File");
  38.             return;
  39.         }
  40.         try{                                              //正常方法
  41.             fin=new FileInputStream(args[0]);  //打开文件
  42.             do{
  43.                 i=fin.read();           //读取字节,文件结尾返回-1
  44.                 if(i!=-1) System.out.print((char)i);
  45.             }while(i!=-1);
  46.         }catch(FileNotFoundException e){
  47.             System.out.println("File Not Found.");
  48.         }catch(IOException e){
  49.             System.out.println("AN I/O Error.");
  50.         }finally{                                                   //finally确保文件关闭
  51.             try{
  52.                 if(fin!=null){
  53.                     fin.close();                     //关闭文件
  54.                 }
  55.             }catch(IOException e){
  56.                 System.out.println("Error Closing File");
  57.             }
  58.         }   
  59. -------------------------------------------------------------------------------
  60. try-with-resources自动资源管理   自动关闭文件
  61.     try(FileInputStream fin=new FileInputStream(args[0])){
  62.             do{
  63.                 i=fin.read();
  64.                 if(i!=-1) System.out.print((char)i);
  65.             }while(i!=-1);
  66.             
  67.         }catch(IOException e){
  68.             System.out.println(e);
  69.         }
  70.     }
  71. }
  72. -----------------------------------------------------------------
  73. 写入文件
  74. import java.io.*;          //导入IO包
  75.  
  76. class CopyFile{
  77.     public static void main(String[] args){
  78.         int i;
  79.         FileInputStream fin=null;        //使用FileInputStream对象从文件读取
  80.         FileOutputStream fout=null;  //使用FileOutputStream对象写入文件
  81.         
  82.         if(args.length!=2){
  83.             System.out.println("Usage: CopyFile from to");
  84.             return;            
  85.         }
  86.         
  87.         try{
  88.             fin=new FileInputStream(args[0]); //要读取的文件名
  89.             fout=new FileOutputStream(args[1]);//要写入文件名
  90.             do{
  91.                 i=fin.read();   //读取字节
  92.                 if(i!=-1) fout.write(i);  //写入字节
  93.             }while(i!=-1);
  94.         }catch(IOException e){
  95.             System.out.println("I/O Error:"+e);
  96.         }finally{              //finally确保关闭文件
  97.             try{
  98.                 if(fin!=null){
  99.                     fin.close();  //关闭文件
  100.                 }
  101.             }catch(IOException e){
  102.                 System.out.println("InputFile Closing Error");
  103.             }
  104.             try{                
  105.                 if(fout!=null){
  106.                     fout.close();  //关闭文件
  107.                 }
  108.             }catch(IOException e){
  109.                 System.out.println("OutputFile Closing Error");
  110.             }
  111.         }
  112. -----------------------------------------------------------------------------
  113. try-with-resources自动资源管理   自动关闭文件
  114.      try(FileInputStream fin=new FileInputStream(args[0]);
  115.             FileOutputStream fout=new FileOutputStream(args[1])){
  116.                 do{
  117.                     i=fin.read();
  118.                     if(i!=-1) fout.write(i);
  119.                 }while(i!=-1);
  120.             }catch(IOException e){
  121.                 System.out.println(e);
  122.             }
  123.     }
  124. }
  125. --------------------------------------------------------------------------------------
  126. 读写二进制数据
  127. import java.io.*;           //导入io包
  128.  
  129. class RWData{
  130.     public static void main(String[] args){
  131.         int i=10;
  132.         double d=1023.56;
  133.         boolean b=true;
  134. //try-with-resources自动资源管理    
  135.         try(DataOutputStream dataOut=new DataOutputStream(new FileOutputStream("testdata"))){
  136.             System.out.println("Writing "+i);
  137.             dataOut.writeInt(i);  //DataOutputStream对象写入二进制数据到文件testdata
  138.             
  139.             System.out.println("Writing "+d);
  140.             dataOut.writeDouble(d);   //DataOutputStream对象写入二进制数据到文件testdata
  141.             
  142.             System.out.println("Writing "+b);
  143.             dataOut.writeBoolean(b);  //DataOutputStream对象写入二进制数据到文件testdata
  144.         }catch(IOException e){
  145.             System.out.println(e);
  146.             return;
  147.         }        
  148.         System.out.println();
  149.  //try-with-resources自动资源管理     
  150.         try(DataInputStream dataIn=new DataInputStream(new FileInputStream("testdata"))){
  151.             i=dataIn.readInt();           //DataInputStream对象从文件读取二进制数据
  152.             System.out.println("Reading "+i);
  153.             
  154.             d=dataIn.readDouble();        //DataInputStream对象从文件读取二进制数据
  155.             System.out.println("reading "+d);
  156.             
  157.             b=dataIn.readBoolean();      //DataInputStream对象从文件读取二进制数据
  158.             System.out.println("reading "+b);
  159.         }catch(IOException e){
  160.             System.out.println(e);
  161.         }
  162.     }
  163. }
  164. ---------------------------------------------------------------------------------
  165. 随机访问文件:
  166. import java.io.*;                //导入java.IO包
  167.  
  168. class RandomAccessDemo{
  169.     public static void main(String[] args){
  170.         double[] data={19.4,10.1,123.54,33.0,87.9,74.25};
  171.         double d;
  172.  //try-with-resources自动资源管理         
  173.         try(RandomAccessFile raf=new RandomAccessFile("random.dat","rw")){  //rw支持读写
  174.             for(int i=0;i<data.length;i++){
  175.                 raf.writeDouble(data[i]);  //RandomAccessFile 实现了DataInput,DataOutput,支持定位请求
  176.             }
  177.             
  178.             raf.seek(0);                     //读取第一个   seek()定位
  179.             d=raf.readDouble();
  180.             System.out.println(d);
  181.             
  182.             raf.seek(8);                  //读取第二个
  183.             d=raf.readDouble();
  184.             System.out.println(d);
  185.             
  186.             raf.seek(8*3);            //读取第四个
  187.             d=raf.readDouble();
  188.             System.out.println(d);
  189.             
  190.             System.out.println();
  191.             
  192.             System.out.println("Read all values:");
  193.             for(int i=0;i<data.length;i++){
  194.                 raf.seek(8*i);                 //读取全部数据
  195.                 d=raf.readDouble();
  196.                 System.out.print(d+"\t");
  197.             }
  198.             
  199.         }catch(IOException e){
  200.             System.out.println(e);
  201.         }
  202.     }
  203. }

字符流:处理字符的输入和输出,使用Unicode,比字节流效率高,Reader和Writer顶端两个抽象类

  1. //读取控制台输入
  2. import java.io.*;
  3.  
  4. class ReadChars{
  5.     public static void main(String[] args)throws IOException{
  6.         char c;
  7.         String str;
  8.         BufferedReader br=new BufferedReader(new InputStreamReader(System.in));//BufferedReader对象读取字符
  9.         System.out.println("Enter characters,period to quit.");       
  10.         do{
  11.             c=(char)br.read();    //读取字符
  12.             System.out.println(c);
  13.             str=br.readLine();    //读取字符串
                System.out.println(str);
  14.         }while(c!='.');
  15.     }
  16. }
  17. -------------------------------------------------------------------------------
  18. //写入控制台输出
  19. import java.io.*;
  20.  
  21. class PrintWriterDemo{
  22.     public static void main(String[] args){
  23.         int i=10;
  24.         double d=123.65;
  25.         PrintWriter pw=new PrintWriter(System.out,true);//PrintWriter对象写入到控制台
  26.         pw.println("Using a PrintWriter.");
  27.         pw.println(i);
  28.         pw.println(d);
  29.     }
  30. }
  31. ----------------------------------------------------------------------------------------
  32. 写入数据到文件:FileWriter
  33. import java.io.*;
  34.  
  35. class KtoD{
  36.     public static void main(String[] args){
  37.         String str;
  38.         BufferedReader br=new BufferedReader(new InputStreamReader(System.in));//BufferedReader对象读取数据    
  39.         System.out.println("Enter text('stop' to quit).");
  40.         try(FileWriter fw=new FileWriter("text.txt")){  //FileWriter对象写入到文件
  41.             do{
  42.                 str=br.readLine();
  43.                 if(str.compareTo("stop")==0) break;
  44.                 str=str+"\r\n";
  45.                 fw.write(str);
  46.             }while(str.compareTo("stop")!=0);
  47.         }catch(IOException e){
  48.             System.out.println(e);
  49.         }        
  50.     }
  51. }
  52. ----------------------------------------------------------------------------------------
  53. 从文件读取:FileReader
  54. import java.io.*;
  55.  
  56. class DtoS{
  57.     public static void main(String[] args){
  58.         String s;
  59.         
  60.         try(BufferedReader br=new BufferedReader(new FileReader("text.txt"))){//BufferedReader读取数据
  61.             while((s=br.readLine())!=null){                                         //FileReader对象读取文件数据
  62.                 System.out.println(s);                   //输出到控制台
  63.             }
  64.         }catch(IOException e){
  65.             System.out.println(e);
  66.         }
  67.     }
  68. }
  69.  

预定义流(属于字节流):System.in标准输入流,默认是键盘,InputStream类型的对象

                    System.out标准输出流,默认是控制台,PrintStream类型的对象

                    System.err标准错误流,默认是控制台,PrintStream类型的对象

猜你喜欢

转载自blog.csdn.net/QQhelphelp/article/details/87953895