输入输出流

http://ye-haiqiang.iteye.com/blog/1224627

 

一、File类

java提供了java.io.File类对目录和文件进行操作。主要的操作方法包括:路径字符串构造方法、isDirectory、isFile、createNewFile、list、getName、delete。

1)构造方法:一般可以通过传递字符串形式的文件路径的方式来创建File对象,其中的File并不会检查该目录或文件是否已经存在。(所以均要IOException)

2)isDirectory()和isFile()方法:用于检查该File对象所代表的是目录还是普通文件;

3)createNewFile()方法:创建新文件,采用File对象所存储的路径和文件名进行创建;

4)list()方法:用于目录,得到目录下所有的文件名,类型为字符串数组;

5)getName()方法:得到文件名,不包含它的路径;

6)delete()方法:删除文件

7)mkdir():创建目录

例如:

Java代码   收藏代码
  1. import java.io.File;  
  2. import java.io.IOException;  
  3. public class FileDirTest   
  4. {  
  5.     public static void main(String[] args)   
  6.     {  
  7.         File dir=new File("F:/test");//创建dir目录对象  
  8.         //判断是否存在  
  9.         if(!dir.exists())  
  10.         {  
  11.             //创建目录  
  12.             dir.mkdir();  
  13.         }  
  14.         //分别在test目录底下创建a、b、c三个目录  
  15.         File file_a=new File(dir.getPath()+File.separator+"a");  
  16.         if(!file_a.exists())  
  17.         {  
  18.             file_a.mkdir();  
  19.         }  
  20.         File file_b=new File(dir.getPath()+File.separator+"b");  
  21.         if(!file_b.exists())  
  22.         {  
  23.             file_b.mkdir();  
  24.         }  
  25.         File file_c=new File(dir.getPath()+File.separator+"c");  
  26.         if(!file_c.exists())  
  27.         {  
  28.             file_c.mkdir();  
  29.         }  
  30.         //创建文件对象file  
  31.         File file=new File(dir.getPath()+File.separator+"a.txt");  
  32.         //判断它是否已经存在  
  33.         if(!file.exists())  
  34.         {  
  35.             try  
  36.             {  
  37.                 file.createNewFile();//创建新文件a.txt  
  38.             }  
  39.             catch (IOException e)  
  40.             {  
  41.                 System.out.println("创建文件失败");             
  42.             }  
  43.         }  
  44.           
  45.         if(dir.isDirectory())//判断它是否为目录  
  46.         {  
  47.             //调用list()方法获取它的所有文件  
  48.             String [] files=dir.list();  
  49.             //遍历文件  
  50.             for(String fileName:files)  
  51.             {  
  52.                 //用目录和文件名生成File对象  
  53.                 File f=new File(dir.getPath()+File.separator+fileName);  
  54.                 //进行分类打印  
  55.                 if(f.isFile())  
  56.                 {  
  57.                     System.out.println("file:"+f.getName());  
  58.                 }  
  59.                 else if(f.isDirectory())  
  60.                 {  
  61.                     System.out.println("dir:"+f.getName());  
  62.                 }  
  63.             }  
  64.         }  
  65.     }  
  66. }  

 

例子2:

如何复制一个文件?

 

步骤:

1)用被复制文件的路径创建一个InputSteam对象

2)用复制文件的新路径创建一个OutputSteam对象。

3)用read()方法循环把数据读出到一个byte数组中,直到读出数据的长度小于0.

4)用write()方法把byte数组中的字节写入输出流。

5)最后关闭输入流和输出流

Java代码   收藏代码
  1. import java.io.FileInputStream;  
  2. import java.io.FileOutputStream;  
  3. import java.io.IOException;  
  4. public class FileCopy   
  5. {  
  6.     public static void main(String[] args) throws IOException  
  7.     {  
  8.         //生成输入文件的输入流对象  
  9.         FileInputStream fin=new FileInputStream("F:/test/a.txt");  
  10.         //生成输出文件的输出流对象  
  11.         FileOutputStream fout=new FileOutputStream("F:/test/c.txt");  
  12.         //定义一个用固暂存数据的byte数组  
  13.         byte [] buff=new byte[256];  
  14.         //每次读取数据的长度  
  15.         int len=0;  
  16.         //循环读取到buff中,如果文件到底,则读取数据的长度小于0  
  17.         while((len=fin.read(buff))>0)  
  18.         {  
  19.             //把数据一次写进输出文件中  
  20.             fout.write(buff,0,len);  
  21.         }  
  22.         //关闭输入流  
  23.         fin.close();  
  24.         //关闭输出流  
  25.         fout.close();  
  26.     }  
  27. }  

 

 例题3:

如何使用随机存取文件RandomAccessFile类

InputStream 和OutputStream都只能单方面的读和写文件的内容,这里介绍下随机存取文件。步骤如下:

1)用length()方法获取文件的内容长度。

2)用seek()方法随机的到达任何需要存取数据的地方

3)调用read()方法获取当前位置的数据,用write()方法写入数据。

4)完成需要以后,关闭文件的打开close()

Java代码   收藏代码
  1. import java.io.IOException;  
  2. import java.io.RandomAccessFile;  
  3. public class RandomFileTest   
  4. {  
  5.     public static void main(String[] args) throws IOException  
  6.     {  
  7.         //创建随机读取文件对象  
  8.         RandomAccessFile file=new RandomAccessFile("f:/test/a.txt","rw");  
  9.         //遍历file的字节数据  
  10.         for(int i=0;i<file.length();i++)  
  11.         {  
  12.             //read()方法读取一个字节  
  13.             byte b=(byte)file.read();  
  14.             //转换为char型  
  15.             char c=(char)b;  
  16.             if(c=='a')  
  17.             {  
  18.                 //把指针又恢复到之前的地方  
  19.                 file.seek(i);  
  20.                 //写入新的字符c  
  21.                 file.write('c');  
  22.             }  
  23.               
  24.         }  
  25.         file.close();  
  26.     }  
  27. }  
  28. //a===》c  

 

二、流(Stream)

字节流的处理方式:字节流处理的是计算机最基本的单位byte,它可以处理任何数据格式的数据。主要的操作对象就是byte数组,通过read()和write()方法把byte数组中的数据写入或读出。(如复制文件)

 

字符流的处理方式:字符流是有字节流包装而来,它的输入和输出流类型包括StringReader和StringWriter、BufferedReader和BufferedWriter。字符流API的基本使用思路有以下步骤:

 

1)获取输入或输出流对象。可以从File得到,也可以从网络或者其他地方得到。

2)根据特定的字符格式创建InputStreamReader或InputStreamWriter对象

3)使用read()或者readLine()方法,得到数据。或使用writer或print()方法进行字符输出。

4)最后关闭reader或writer

 

Java代码   收藏代码
  1. import java.io.*;  
  2. public class ReaderTest   
  3. {  
  4.     public static void main(String[] args) throws IOException   
  5.     {  
  6.         //获取输入流  
  7.         InputStream in =new FileInputStream("f:/test/a.txt");  
  8.         //得到InputStreamReader对象  
  9.         InputStreamReader isr=new InputStreamReader(in,"GBK");  
  10.         //创建reader对象  
  11.         BufferedReader br=new BufferedReader(isr);  
  12.         //创建StringBuffer对象,临时保存字符内容  
  13.         StringBuffer sb=new StringBuffer();  
  14.         String str=null;  
  15.         //循环读取一行数据  
  16.         while((str=br.readLine())!=null)  
  17.         {  
  18.             //加入字符  
  19.             sb.append(str);  
  20.         }  
  21.         System.out.println("a.txt content :"+sb);  
  22.         //关闭流  
  23.         br.close();  
  24.     }  
  25. }  

 

每天一点点希望对大家有利~~

你可能感兴趣的:(输入输出流)