zoukankan      html  css  js  c++  java
  • I/O流

    boolean exists(): 判断这个文件是否存在
    boolean mkdir(): 创建文件夹路径(只能建一层)--make Directory
    boolean mkdirs(): 创建文件夹路径
    createNewFile(): 创建文件
    delete(): 删除文件
    renameTo(File file): 对文件进行更名操作
    getName: 获取文件名称
    getPath: 获取文件路径
    length: 获取文件大小
    isDirectory: 判断这个东西是不是一个目录
    isFile: 判断这个东西是不是一个文件
    File[] listFiles: 获取当前这个路径下面所有的文件和文件夹

    In / Out流
    什么是流
    流, 可以看成是一根管道, 用来读取文件的数据
    原始的数据都是用过二进制的形式来进行数据的传输,
    文件---10111010-->程序
    文件<--10111010---程序

    流的分类
    按照数据流的方向
    输入流(Input), 输出流(Output)
    输入流: 从文件往程序走数据
    输出流: 从程序往文件走数据

    按照处理数据的单位不同:
    八大数据类型所占字节数:
    byte(1), short(2), int(4), long(8)
    float(4), double(8)
    boolean(1)
    char(2)

    字节流(以stream结尾的), 字符流(以Reader, Writer结尾的)
    字节流: 一个字节占8位, 以一个字节为单位读数据
    字符流: 一个字符占两个字节, 以一个字符为一个单位

    按照功能分:
    节点流, 处理流
    节点流: 只有一个根管道套在文件上进行传输
    处理流: 将节点流处理一下, 增强管道的功能, 相当于在管道上套一层

     

    import java.io.File;
    
    public class FileTest {
        public static void main(String[] args){
             File file=new File("D:\0603\Student.txt");
             System.out.println(file.getName());
             printf(file,1);
        } 
        public static void printf(File file,int len){
             if(file.exists()){   //检验文件是否存在
                 File[] file2 = file.listFiles();
                    for(File f:file2){
                        if(f.isDirectory()){    //判断文件是否是一个目录
                            printBlank(len);    //创建空格
                            System.out.println(f.getName());
                            printf(f,len+1);
                        }else{
                            printBlank(len);
                            System.out.println(f.getName());
                        }
                    } 
             }else{
                 System.out.println("该文件不存在");
             }
         }
    
        private static void printBlank(int len) {
            for(int i=0;i<len;i++){
                System.out.println("   ");    
            }        
        }  
    }

    InputStream的基本方法:

    int read(): 每次调用这个方法, 就读取一个字节, 以整数的形式返回
    int read(byte[] buffer---缓冲区): 让流每次读满一个缓冲区, 再统一处理, 先存在缓冲区里, 返回值int是返回实际当中读取了多少字节数(伤硬盘的原理)
    int read(byte[] buffer, int offset, int length): 也是一个缓冲区, 读取length长度的字节数, 存到buffer的缓冲区里, 从buffer的offset位置开始存, 返回值是实际读了多少字节数
    close(): 关闭资源

    OutputStream的基本方法

    void write(int b)
    void write(byte[] b)
    int wirte(byte[] buffer, int offset, int length)
    close()
    flush(): 将缓冲区中的文件全部写出
    在使用流的时候的一个良好的习惯, 先flush, 再close

    Reader的基本方法:
    int read()
    int read(char[] c)
    int read(char[] c, int offset, int length)
    close()

    Writer的基本方法:
    void write()
    void write(char[] c)
    void write(char[] c, int offset, int length)
    // 直接写一个字符串出去, 字符串里面的有一个方法s.toCharArray(), 查API
    void write(String s)
    void write(String s, int offset, int length)
    close()
    flush()

    FileInputStream , FileOutputStream
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.InputStream;
    
    
    public class Text1 {
        public static void main(String[] args){
            File file=new File("D:\0603\person.txt");
            //File file_out=new File("D:\0603\Student.txt");
            int a=-1;
            try{
                InputStream in = new FileInputStream(file);
                //OutputStream out= new FileOutputStream(file_out);
                while((a=in.read()) != -1){
                    System.out.print((char)a);
                }
                in.close();
                
            }catch(FileNotFoundException e){
                e.printStackTrace();
            }catch(IOException e){
                e.printStackTrace();
            }
        } 
    }

    BufferedReader

               readLine()---每次调用就会读取一行

    BufferedWriter

               writeLine(String s)---每次调用写出一行

    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.Reader;
    
    public class Text2 {
        public static void main(String[] args){
            String content[] = {"Java部","快速入门"};  //定义字符串数组
            File file=new File("D:\0603\Student.txt");
            Reader reader = null;      //定义字符串
            try{
                FileWriter fw = new FileWriter(file);    // 创建FileWriter类对象
                BufferedWriter bufw = new BufferedWriter(fw);   //创建BufferedWriter类对象
                for(int k=0;k<content.length;k++){   //循环遍历数组
                    bufw.write(content[k]);   //将字符串数组中元素写入到磁盘文件中
                    bufw.newLine();     //将数组中的单个元素以单行的形式写入文件
                }
                bufw.close();
                fw.close();
            }catch(Exception e){
                e.printStackTrace();
            }
            
            try{
                reader = new FileReader(file);     //创建FileReader类对象
                BufferedReader br= new BufferedReader(reader);    // 创建BufferedReader对象
                
                String s=null;    //创建字符串对象
                while((s = br.readLine())!= null){     //将变量做自增运算
                    System.out.println(s);      //输出文件数据
                }
                br.close();      //将BufferedReader流关闭
            }catch(FileNotFoundException e){
                e.printStackTrace();   //处理异常
            }catch(IOException e){
                e.printStackTrace();
            }
        }
    }
  • 相关阅读:
    Windowless controls
    System进程无法创建一个Administrator用户的子进程
    PE文件分析工具
    使用IHTMLDocument3 的getElementById获取控件总是返回空的解决方法
    Windows Sockets2 详解2——堵塞与非堵塞模式
    CopySourceAsHtml外部工具版
    像使用C#一样使用C++
    Windows Sockets2 提供者专用扩展机制
    Windows Sockets2 详解1——服务器客户端通讯
    腾讯实习面试(二)
  • 原文地址:https://www.cnblogs.com/jgjk/p/7264762.html
Copyright © 2011-2022 走看看