FileReader

package file;
import java.io.*;
public class FileReader {

    public static void main(String[] args){
//        Demo1();
//        Demo2();
//        Demo3();
//        Demo4();
//        Demo5();
        //Demo6();
        Demo7();
      }
    //file的使用例子
    public static void  Demo1()
    {
        File f = new File("e:\file"); 
        if(f.isDirectory())
        {
            System.out.println(f.getPath());
        }
    }
    public static void Demo2()
    {
          File f;
          //File.separator是分隔符,因为不同平台可能用的不一样,windows可能用\而linux可能用//
          f = new File("e:" + File.separator + "file" + File.separator + "io.txt");//获得路径句柄
          try {
            System.out.println(f.createNewFile());//创建文件
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
          //f.delete();
          System.out.println(f.getPath());
    }
    public static void Demo3()
    {
        File f=new File("e:\file\demo.txt");//构造一个路径的句柄
        System.out.println(f.getPath());
        System.out.println(f.getParent());
        if(f.exists())//如果文件存在则删除,不存在则生成
        {
            f.delete();
            //System.out.println("文件已经存在!");
        }
        else
        {
            try {
                System.out.println(f.createNewFile());
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
    public static void Demo4()
    {
        File file=new File("e:"+File.separator+"file");//获得e:file文件句柄
        String[] str=file.list();//使用list()将里面的文件都放在String 数组里
        for(int i=0;i<str.length;i++)
        {
            System.out.println(str[i]);
        }
    }   
    public static void fun(File f){
        //判断给定的路径是否是目录,如果是目录在列出
        if(f.isDirectory()){
            File[] file = f.listFiles();
            //再依次循环进行判断
            try{
                for(int i = 0;i < file.length;i++){
                    //继续把内容传入到fun方法之中进行验证
                    fun(file[i]);
                }
            }catch(Exception e){}
        }
        else{
            System.out.println(f);
        }
    }
    //使用递归调用 扫描e盘所有的文件  
    public static void Demo5()
    {
        File file=new File("e:\");
        fun(file);
    }
    
    
    //fileInputStream的使用例子
    public static void Demo6()//错误例子,不能直接用String将字节流转为字符,应该用InputStreamReader
    {
        try
        {
            File file=new File("e:"+File.separator+"file"+File.separator+"io.txt");
            FileInputStream fis=new FileInputStream(file);
            byte[] b=new byte[fis.available()];
            fis.read(b);//将文件的内容读取到byte数组中
            fis.close();
            String str=new String(b);//怎么会乱码???
            System.out.println(str);
        }
        catch(IOException e)
        {
            e.printStackTrace();
        }
        
        
    }
    public static void Demo7()
    {
        try
        {
            String encoding="GBK";
            File file=new File("e:"+File.separator+"file"+File.separator+"io.txt");
            FileInputStream fis=new FileInputStream(file);//从句柄中读取文件的字节流,创建字节流对象
             if(file.isFile() && file.exists())
             {
                InputStreamReader isr=new InputStreamReader(fis,encoding);//将字节流转化为字符流,创建字符流对象
                 BufferedReader bfr=new BufferedReader(isr);//BufferedReader对使用者输入的字符进行缓冲
                 String line=null;
                 while((line=bfr.readLine())!=null)
                 {
                     System.out.println(line);
                 }
                  bfr.close();
             }
        }
        catch(IOException e)
        {
            e.printStackTrace();
        }
    }  
}
原文地址:https://www.cnblogs.com/qianwen/p/3907423.html