javaOOP(IO流)

  1. 什么IO?

    是以流为基础进行数据的输入输出。

  2. 流是干什么的?

    通俗点说就是java通过数据流方式和外部进行通讯。

问题1: 在计算机操作系统中有哪几类文件?

分为两类

文件夹 创建文件夹 mkdir() mkdirs()

文件 创建文件 createNewFile()

文件和文件夹有什么不一样的? ​

文件有后缀名 .txt .jpg

文件夹没有后缀名

3.文件File

        1.文件File的构造方法:

  File(File parent, String child):从父抽象路径名和子路径名字符串创建新的 File实例。

        File(String pathname):wenija通过将给定的路径名字符串转换为抽象路径名来创建新的File实例。

        File(String parent, String child):从父路径名字符串和子路径名字符串创建新的 File实例。  
        File:(URI uri)通过将给定的 file: URI转换为抽象路径名来创建新的 File实例。 

         2.文件File常用的方法:

        int compareTo(File pathname) 
        比较两个抽象的路径名字典。  
        boolean createNewFile() 
        当且仅当具有该名称的文件尚不存在时,原子地创建一个由该抽象路径名命名的新的空文件。  
        static File createTempFile(String prefix, String suffix) 
        在默认临时文件目录中创建一个空文件,使用给定的前缀和后缀生成其名称。  
        static File createTempFile(String prefix, String suffix, File directory) 
        在指定的目录中创建一个新的空文件,使用给定的前缀和后缀字符串生成其名称。  
        boolean delete() 
        删除由此抽象路径名表示的文件或目录。  
        void deleteOnExit() 
        请求在虚拟机终止时删除由此抽象路径名表示的文件或目录。  
        boolean equals(Object obj) 
        测试此抽象路径名与给定对象的相等性。  
        boolean exists() 
        测试此抽象路径名表示的文件或目录是否存在。  
        File getAbsoluteFile() 
        返回此抽象路径名的绝对形式。  
        String getAbsolutePath() 
        返回此抽象路径名的绝对路径名字符串。  
        File getCanonicalFile() 
        返回此抽象路径名的规范形式。 

练习1:

创建文件

d:\\abc\\1.txt

代码示例:

File file1=new File("D:"+File.separator+"abc");
     file1.mkdirs();
File file2=new File(file1,"1.txt");
     file2.createNewFile();

优化: 创建文件

d:\\abc\\5.txt
​
首先判断 abc是否存在,如果存在,则不创建文件夹,而是在此文件夹下创建文件
                    如果abc不存在,创建文件夹,再在此文件夹下创建文件

代码示例:

File file1=new File("D:"+File.separator+"abc");
            if (!file1.exists()){
                file1.mkdirs();
            }
            File file2=new File(file1,"1.txt");
            if (!file2.exists()) {
                file2.createNewFile();
            }

练习2:使用Java 创建100个文件夹,文件夹名字分别是 1,2,3。。100,在文件夹内部,根文件夹名字对应,生成一个txt文档,1.txt 2.txt。。100.txt

代码示例:

for (int i = 1; i <= 100; i++) {
            File file5=new File("D:"+File.separator+"abc"+File.separator+i);
            if (!file5.exists()){
                file5.mkdirs();
            }
            File file6=new File(file5,i+".txt");
            if (!file6.exists()) {
                file6.createNewFile();
            }
            FileOutputStream fos1=new FileOutputStream(file6);
            String s = String.valueOf(i);
            byte[] bytes = s.getBytes();
            fos1.write(bytes);
            fos1.close();
        }
  1. 常用的流

    为什么要用流?

        数据要传输,必定会有输入端与输出端。

流分为几类

字节流

字节输入流 字节输出流

字符流

字符输入流 字符传输流

  1. FileOutputStream 文本字节输出流

    作用是什么?

    把内存中的数据写入到硬盘的文件中。

    构造方法?

    FileOutputStream(File file) 
    创建文件输出流以写入由指定的 File对象表示的文件。  
    FileOutputStream(File file, boolean append) 
    创建文件输出流以写入由指定的 File对象表示的文件。  
    FileOutputStream(FileDescriptor fdObj) 
    创建文件输出流以写入指定的文件描述符,表示与文件系统中实际文件的现有连接。  
    FileOutputStream(String name) 
    创建文件输出流以指定的名称写入文件。  
    FileOutputStream(String name, boolean append) 
    创建文件输出流以指定的名称写入文件。  
     

    常用方法?

    void close() 
    关闭此文件输出流并释放与此流相关联的任何系统资源。  
    protected void finalize() 
    清理与文件的连接,并确保当没有更多的引用此流时,将调用此文件输出流的 close方法。  
    FileChannel getChannel() 
    返回与此文件输出流相关联的唯一的FileChannel对象。  
    FileDescriptor getFD() 
    返回与此流相关联的文件描述符。  
    void write(byte[] b) 
    将 b.length个字节从指定的字节数组写入此文件输出流。  
    void write(byte[] b, int off, int len) 
    将 len字节从位于偏移量 off的指定字节数组写入此文件输出流。  
    void write(int b) 
    将指定的字节写入此文件输出流。  
     

  2. FileInputStream 文本字节输入流

    作用是什么?

    从文件系统中的文件获取输入字节。 可用的文件取决于主机环境。

        构造方法?

        FileInputStream(File file) 
        通过打开与实际文件的连接创建一个 FileInputStream ,该文件由文件系统中的 File对象 file命名。  
        FileInputStream(FileDescriptor fdObj) 
        创建 FileInputStream通过使用文件描述符 fdObj ,其表示在文件系统中的现有连接到一个实际的文件。  
        FileInputStream(String name) 
        通过打开与实际文件的连接来创建一个 FileInputStream ,该文件由文件系统中的路径名 name命名。

        常用的方法?

        int available() 
        返回从此输入流中可以读取(或跳过)的剩余字节数的估计值,而不会被下一次调用此输入流的方法阻塞。  
        void close() 
        关闭此文件输入流并释放与流相关联的任何系统资源。  
        protected void finalize() 
        确保当这个文件输入流的 close方法没有更多的引用时被调用。  
        FileChannel getChannel() 
        返回与此文件输入流相关联的唯一的FileChannel对象。  
        FileDescriptor getFD() 
        返回表示与此 FileInputStream正在使用的文件系统中实际文件的连接的 FileDescriptor对象。 
        int read() 
        从该输入流读取一个字节的数据。  
        int read(byte[] b) 
        从该输入流读取最多 b.length个字节的数据为字节数组。  
        int read(byte[] b, int off, int len) 
        从该输入流读取最多 len字节的数据为字节数组。  
        long skip(long n) 
        跳过并从输入流中丢弃 n字节的数据。  

7. FileOutputStream和FileInputStream的结合使用
​
1. 图片的复制 代码示例:
File file=new File("D:\\abc\\1\\1.png");
        FileInputStream fis=new FileInputStream(file);
        FileOutputStream fos=new FileOutputStream("D:\\abc\\2\\1.png");
        int len=0;
        byte[] bytes=new byte[1024];
        while ((len=fis.read(bytes)) != -1){
            fos3.write(bytes,0,len);
        }

        fos.close();
        fis.close();
2. 图片的剪切 代码示例:
File file=new File("D:\\abc\\1\\1.png");
        FileInputStream fis=new FileInputStream(file);
        FileOutputStream fos=new FileOutputStream("D:\\abc\\2\\1.png");
        int len=0;
        byte[] bytes=new byte[1024];
        while ((len=fis.read(bytes3)) != -1){
            fos3.write(bytes,0,len);
        }

        fos.close();
        fis.close();
        file.delete();

8.  字符输出流 
​
作用是什么?

把硬盘文件中的数据,以字符的方式读取到内存中

构造方法?

protected  Writer() 
创建一个新的人物流作家,其关键部分将在作者本身上同步。  
protected  Writer(Object lock) 
创建一个新的字符流写入器,其关键部分将在给定对象上进行同步。 

常用的方法?

Writer append(char c) 
将指定的字符附加到此作者。  
Writer append(CharSequence csq) 
将指定的字符序列附加到此作者。  
Writer append(CharSequence csq, int start, int end) 
将指定字符序列的子序列附加到此作者。  
abstract void close() 
关闭流,先刷新。  
abstract void flush() 
刷新流。  
void write(char[] cbuf) 
写入一个字符数组。  
abstract void write(char[] cbuf, int off, int len) 
写入字符数组的一部分。  
void write(int c) 
写一个字符  
void write(String str) 
写一个字符串  
void write(String str, int off, int len) 
写一个字符串的一部分。 
 

9.  字符输入流
​
   作用是什么?

        把内存中的数据,以字符的方式写入到文件

    构造方法?

        protected  Reader() 
        创建一个新的字符流阅读器,其关键部分将在阅读器本身上同步。  
        protected  Reader(Object lock) 
        创建一个新的字符流阅读器,其关键部分将在给定对象上同步。  

    常用的方法?

        abstract void close() 
        关闭流并释放与之相关联的任何系统资源。  
        void mark(int readAheadLimit) 
        标记流中的当前位置。  
        boolean markSupported() 
        告诉这个流是否支持mark()操作。  
        int read() 
        读一个字符  
        int read(char[] cbuf) 
        将字符读入数组。  
        abstract int read(char[] cbuf, int off, int len) 
        将字符读入数组的一部分。  
        int read(CharBuffer target) 
        尝试将字符读入指定的字符缓冲区。  
        boolean ready() 
        告诉这个流是否准备好被读取。  
        void reset() 
        重置流。  
        long skip(long n) 
        跳过字符  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值