首页 > 代码库 > java面向对象第十章

java面向对象第十章

文件:存储相关记录或放在一起的数据的集合。

 

导入文件需要导入一个包: java.io.*;

 

File创建对象时需要关联一个字符串:

                File f=new File("[放入文件的路径关联指定的文件名或目录名]")

 

显示目录下所以的文件或目录:File [] files=对象名.listFiles();<输出既包括文件有包括文件夹>

                                可通过 isFile方法判断是否为文件

 

1kb=1024b(字节)   1MB=1024kb

 

执行删除操作时删除文件夹时,文件夹里面有子文件时不能删除。

public static void main(String [] args ){
        File file=new File("D:\\Test\\hello.txt");
        
        if(file.exists()){    //判断是否有文件或文件夹存在
            if(file.isFile()){    //如果是文件
                System.out.println("名称:"+file.getName());
                System.out.println("相对路径:"+file.getPath());
                System.out.println("绝对路径:"+file.getAbsolutePath());
                System.out.println("文件大小为:"+file.length());
                
            }
            if(file.isDirectory()){
                System.out.println("此文件为目录或文件夹!");
            }else{
                System.out.println("文件不存在!");
            }
            
        }
    }

File读取文件操作

递归算法:《方法直接或间接调用自己》

public static void main(String [] args){
//        File file=new File("D:\\Test");
//        showInfo(file);
        
        //非菠萝契数列:1 1 2 3 5 8 ......
        //int [] muns=new int[10];    //定义数组
        Scanner input=new Scanner(System.in);
        System.out.println("请输入您要计算的位置:");
        int a=input.nextInt();
        System.out.println(suan(a-1));
    }
    
    private static void showInfo(File f){
        File [] file=f.listFiles();
        for(int i=0;i<file.length;i++){
            System.out.println(file[i].getName());    //得到一级目录中的文件和文件夹
            if(file[i].isDirectory()){    //判断一级目录中是否含有文件夹
                showInfo(file[i]);//调用自己方法
            }
        }
    }
    
    private static  int suan(int i){
        if(i==0 || i==1){
            return i=1;
        }else{
        return suan(i-2)+suan(i-1);
        }
    }

递归算法

Java中的流

                1.字节流:   InputStream(输入流:读取文件)            InputStream   input=new FileInputStream(对象名或文件路径) <不能直接new>【不能显示中文】

                                           OutputStream(输出流:写入文件)          OutputStream output=new   FileOutPutStream(对象名或文件路径) <不能直接new>【写入文件会覆盖原文件或者会新建新文件】

public static void main(String [] args) throws Exception{
//        //声明流对象
//        FileInputStream fis=null;
//        try {
//            fis =new FileInputStream("D:\\Test\\hello.txt");
//            int data;
//            System.out.println("文件内容为:");
//            
//            //循环读取数据
//        
//                while((data=http://www.mamicode.com/fis.read())!=-1){>//                    System.out.print((char)data+"");
//                }
//        }catch (FileNotFoundException e) {
//            // TODO Auto-generated catch block
//            e.printStackTrace();
//        }        
//         catch (IOException e) {
//            // TODO Auto-generated catch block
//            e.printStackTrace();
//        
//    } finally {
//        if(fis!=null){
//            try {
//                fis.close();
//            } catch (IOException e) {
//                // TODO Auto-generated catch block
//                e.printStackTrace();
//            }
//        }
//    }

 FileInputStream
public static void main(String [] args){
        OutputStream fos=null;
        try {
            String str="好好学习java";
            String a="每天"+10+"分钟";
            byte [] words= str.getBytes();        //字节数组
            
            //创建流的对象,以追加方式写入文件
            fos=new FileOutputStream("D:\\Test\\test.txt");
            
            //写入文件
            try {
                fos.write(words);
                fos.write(a.getBytes());
                System.out.println("Test文件已更新!");
            } catch (IOException e) {
                System.out.println("文件创建时失败!");
            }
            
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

OutputStream

2.字符流:Rearder(字符输入流:读取文件)                              Rearder  fr=new FileRearer(对象名或文件路径)                【可以显示中文】

                                BufferedReader字符输入流:读取文件)       BufferedReader  br=new     BufferedReader(只能放Rearder的对象名);

                                BufferedReader的效率比Rearder高些。

                          Writer(字符输出流:写入文件)                          Writer fr=new File Writer(对象名或文件路径)

public static void main(String [] args){
        Reader fr=null;
        StringBuffer sbf=null;
         try {
            fr=new FileReader("D:\\Test\\test.txt");
            sbf=new StringBuffer();
            int length;
            while((length=fr.read())!=-1){
                char c=(char)length;
                sbf.append(c);
            }
            System.out.println(sbf.toString());    //输出数据
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            if(fr!=null){
                try {
                    fr.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    }

Reader
public static void main(String [] args){
        Reader fr=null;
        BufferedReader br=null;
        try {
            //先创建一个FileReader对象
            fr=new FileReader("D:\\Test\\test.txt");
            
            //在创建一个BufferedReader对象
            br=new BufferedReader(fr);
            
            //读取每一行数据
            String line=br.readLine();
            while(line!=null){
                System.out.println(line);
                line=br.readLine();//再次赋值进行判断
            }
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            try {
                br.close();    //先关
                fr.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }

BufferedReader
public static void main(String [] args){
        Writer fw=null;
        
        try {
            //创建一个FileWrite对象
            fw=new FileWriter("D:\\Test\\简介.txt");
            
            //写入信息
            fw.write("我热爱我的团队!"+"\r\n");
            fw.write("张三"+"\r\n");        //\r\n进行换行
            fw.write("18岁");
            fw.flush();        //刷新缓冲区
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            try {
                fw.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }

Writer

 3.DataInputStream字节流来输出二进制的文件    是filterInputStream的子类

                    DataOutPutStream字节流来写入二进制的文件   是filterOutputStream的子类

                            二进制文件(乱码)能够增强文件的安全性

 

实体类  可实现一个序列化操作的接口  做数据传递的载体    二进制(01)、XML形式(标记《可跨平台跨语言》)

java面向对象第十章