小言_互联网的博客

Java面向对象基础--IO系统

319人阅读  评论(0)

Java面向对象基础–IO系统

一、IO

输入:input
输出:output

Java的IO主要包含三个部分

  • 流式部分:IO的主题部分
  • 非流式部分:主要包含一些辅助流式部分的类
  • 文件读取部分的与安全相关的类以及与本地操作系统相关的文件系统的类

Java中的流操作分为两种:

二、File类

File类对象表示磁盘上的文件或目录。它提供了与平台无关的方法来对磁盘上的文件或目录进行操作。

代码实例如下:

import java.io.File;
import java.io.IOException;

public class Tset01 {
   
    public static void main(String[] args) {
   
        File f1 = new File("reba.jpg");
        File f2 = new File("g:/reba.jpg");
        File f3 = new File("g:/aa");
        File f4 = new File("g:/aa/bb");

        try {
   
            //创建文件
            boolean b1 = f1.createNewFile();
            boolean b2 = f2.createNewFile();
            //创建文件夹
            boolean b3 = f3.mkdir();
            //创建多个文件夹
            boolean b4 = f4.mkdirs();

            if (b1&&b2&&b3&&b4){
   
                System.out.println("创建成功!!!");
            }else {
   
                System.out.println("创建失败???");
            }
        } catch (IOException e) {
   
            e.printStackTrace();
        }
    }
}

运行结果如下:
、、

三、FileInputStream和FileOutputStream


代码实例如下:

//复制图片

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class FileInputStreamDemo {
   
    public static void main(String[] args) {
   
        FileInputStream fis = null;
        FileOutputStream fos = null;
        try {
   
            fis = new FileInputStream("g:/锁屏/reba.jpg");
            fos = new FileOutputStream("g:/aa/bb/dlrb.jpg");
            byte [] b = new byte[1024];
            int result=0;
            try {
   
                while ((result = fis.read(b))!=-1){
   
                    fos.write(b,0,result);
                }
            } catch (IOException e) {
   
                e.printStackTrace();
            }
        } catch (FileNotFoundException e) {
   
            e.printStackTrace();
        }finally {
   
            try {
   
                fis.close();
                fos.close();
            } catch (IOException e) {
   
                e.printStackTrace();
            }
        }

    }
}

运行结果如下:

四、BufferedReader和BufferedWriter

BufferedReader与BufferedWriter实现了自带缓冲区的字符流高效读写,其最小操作单元为一个字符(16位) ,同时,我们也可以自己指定缓冲区的大小,默认的缓冲区有8192个字符,通常情况下已经足够了。

代码实例1如下:

//设置缓冲区复制图片

import java.io.*;

public class BufferedInputDemo {
   
    public static void main(String[] args) {
   
        FileInputStream fis = null;
        FileOutputStream fos = null;
        BufferedInputStream bis = null;
        BufferedOutputStream bos = null;
        try {
   
            fis = new FileInputStream("g:/锁屏/reba.jpg");
            bis = new BufferedInputStream(fis);
            fos = new FileOutputStream("g:/aa/bb/dlrb1.jpg");
            bos = new BufferedOutputStream(fos);
            int result = 0;
            byte [] b = new byte[2048];
            try {
   
                while ((result = bis.read(b))!=-1){
   
                    bos.write(b,0,result);
                }
            } catch (IOException e) {
   
                e.printStackTrace();
            }
        } catch (FileNotFoundException e) {
   
            e.printStackTrace();
        }finally {
   
            try {
   
                bos.close();
                bis.close();
                fis.close();
                fos.close();
            } catch (IOException e) {
   
                e.printStackTrace();
            }
        }
    }
}

运行结果如下:

代码实例2如下:

//带缓冲区的复制

import java.io.*;

public class BufferedReadDemo {
   
    public static void main(String[] args) {
   
        BufferedReader br = null;
        BufferedWriter bw = null;
        try {
   
            br = new BufferedReader(new FileReader("g:/aaa.txt"));
            try {
   
                bw = new BufferedWriter(new FileWriter("g:/aa/bb/aaa.txt"));
                String temp = null;
                while ((temp=br.readLine())!=null){
   
                    bw.write(temp);
                    bw.newLine();
                }
                bw.flush();
            } catch (IOException e) {
   
                e.printStackTrace();
            }
        } catch (FileNotFoundException e) {
   
            e.printStackTrace();
        }finally {
   
            try {
   
                bw.close();
                br.close();
            } catch (IOException e) {
   
                e.printStackTrace();
            }
        }
    }
}

运行结果如下:

代码实例3如下:

//使用缓冲区读取控制台输入,写入文件
import java.io.*;

public class BufferedRead {
   
    public static void main(String[] args) {
   
        BufferedReader br = null;
        BufferedWriter bw = null;
        br = new BufferedReader(new InputStreamReader(System.in));
        try {
   
            bw = new BufferedWriter(new FileWriter("g:/bb.txt"));
            String temp = null;
            while ((temp = br.readLine())!=null){
   
                if (temp.equals("quit")){
   
                    break;
                }
                bw.write(temp);
                bw.newLine();
            }
        } catch (IOException e) {
   
            e.printStackTrace();
        }finally {
   
            try {
   
                bw.close();
                br.close();
            } catch (IOException e) {
   
                e.printStackTrace();
            }
        }
    }
}

运行结果如下:

五、Java字符集

在JVM内部,统一使用基于Unicode字符集的字符编码

public class EnCoding {
   
    public static void main(String[] args) {
   
        System.out.println(System.getProperty("file.encoding"));
    }
}

运行结果如下:

六、PrinterWriter

PrintWriter类和BufferedWriter-样,也继承自Writer类,它们的大部分功能是一-样的。不同的是,BufferedWriter提供了缓冲区,能提供高效的数据写入,而PrintWriter提供了数据的格式化,例如print(boolean b)、print(char C)、print(double d)及支持任意平台的换行方法println()等等,这使得我们的程序更加自由

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;

public class PrintWriterDemo {
   
    public static void main(String[] args) {
   
        //通过包装BufferedWriter创建PrintWriter,文件位置在当前工程根目录
        //没有启用PrintWriter的自动刷新(flush)功能
        try {
   
            PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter("g:/aaa.txt"))) ;
            pw.print(" PrintWriter演示") ;
            pw.println() ;
            pw.println(false) ;
            pw.println(3.14) ;
            pw.println(new char[]{
   'a','哦','e','i','u'});
            pw.println (new Integer (2009)) ;
            pw.flush();
        } catch (IOException e) {
   
            e.printStackTrace();
        }
    }
}

运行结果如下:


转载:https://blog.csdn.net/qq_43928469/article/details/110387182
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场