JAVA面向对象(8)

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

导入文件需要导入一个包: 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读取文件操作

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

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

import java.io.*;

import java.util.*;

public class digui {

         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=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("我热爱我的团队!"+"
");
            fw.write("张三"+"
");        //
进行换行
            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形式(标记《可跨平台跨语言》)

原文地址:https://www.cnblogs.com/etid/p/7019546.html