美文网首页
文件IO流

文件IO流

作者: cccccttttyyy | 来源:发表于2018-07-26 16:49 被阅读0次

从控制台读取输出字符
从文件中写入读取字符
从文件中写入读取字节
文件夹操作

image.png

1. 从控制台读取输出字符

输入由System.in完成。将System.in放入inputStreamReader中,再传入到提供缓冲区的BufferReader中。读取单个字符使用 read()函数,当返回值为-1时代表读取到结尾。读取一行文字时用readLine()函数。输出即最常用的System.out.println();

 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));//将字符流绑定到控制台
        //读取字符
        System.out.println("输入字符, 按下 'q' 键退出。");
        char c;
        do {
            c = (char) br.read();//read方法每次从控制台中读取一个字符
            System.out.println(c);
        } while (c != 'q');
        //读取字符串
        String str;
        System.out.println("接下来请输入字符串,输入‘end’退出");
        do {
            str = br.readLine();
            System.out.println(str);
        } while (!str.equals("end"));
    }

2. 从文件中写入读取字符

与文件进行IO操作时,用FileInputStream FileOutputStream,若是字符组成的文件,为方便操作还要放入InputStreamReader(常用于字节到字符的转换),OutputStreamWriter中。

        File f = new File("a.txt");
        FileOutputStream fop = new FileOutputStream(f);
        // 构建FileOutputStream对象,文件不存在会自动新建
        OutputStreamWriter writer = new OutputStreamWriter(fop, "UTF-8");
        // 构建OutputStreamWriter对象,参数可以指定编码,默认为操作系统默认编码,windows上是gbk
        writer.append("中文输入");
        writer.append("\r\n");
        writer.append("English");
        writer.close();
        fop.close();

        FileInputStream fip = new FileInputStream(f);
        InputStreamReader reader = new InputStreamReader(fip, "UTF-8");
        // 构建InputStreamReader对象,编码与写入相同
        StringBuffer sb = new StringBuffer();//读取缓冲区
        while (reader.ready()) {
            sb.append((char) reader.read());
            // 转成char加到StringBuffer对象中
        }
        System.out.println(sb.toString());
        reader.close();
        fip.close();

3. 从文件中写入读取字节

二进制文件如图片,媒体文件等需要通过字节方式传输。此时不要放入Reader和Writer中。

        byte[] by = new byte[4];
        InputStream is = new FileInputStream("aa.jpg");
        OutputStream os = new FileOutputStream("b.jpg");
        while(is.read(by)!=-1)
        {
            os.write(by);
        }
        os.close();
        is.close();

4. 文件夹操作

对文件夹的创建,列表,删除操作。

        File fordir = new File("E:/testtext/hell/e");
        fordir.mkdirs();//创建文件夹
        //fordir.createNewFile();
        System.out.println(fordir.isDirectory());//判断是否是一个文件夹
        //查看文件夹里的内容
        String s[] = fordir.list();
        for (int i = 0; i < s.length; i++) {
            File f1 = new File(fordir + "/" + s[i]);
            if (f1.isDirectory()) {
                System.out.println(s[i] + " 是一个目录");
            } else {
                System.out.println(s[i] + " 是一个文件");
            }
        }
        //删除文件夹
        File fordel = new File(fordir + "/"+ "1");
        fordel.mkdir();
        fordel.delete();

使用IO流的常用方式如下:

1) File file = new File ("hello.txt"); 
FileInputStream in=new FileInputStream (file); //读取二进制
2) File file = new File ("hello.txt"); 
FileInputStream in=new FileInputStream (file); 
InputStreamReader inReader=new InputStreamReader (in,"UTF-8"); 
BufferedReader bufReader=new BufferedReader(inReader); //需要指定编码的字符文件
3) File file = new File ("hello.txt"); 
FileReader fileReader=new FileReader(file); //与InputStreamReader区别仅仅是构造函数
BufferedReader bufReader=new BufferedReader(fileReader);

附全部代码:

import java.io.*;
public class Main {
    public static void main(String[] args) throws IOException {
       //IoReadCmd();
       //IoReadFile();
       IoDir();

    }
    public static void IoReadCmd() throws IOException {
        /**
         * JavaIO流之控制台
         * Java 的控制台输入由 System.in 完成。
         */
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));//将字符流绑定到控制台
        //读取字符
        System.out.println("输入字符, 按下 'q' 键退出。");
        char c;
        do {
            c = (char) br.read();//read方法每次从控制台中读取一个字符
            System.out.println(c);
        } while (c != 'q');
        //读取字符串
        String str;
        System.out.println("接下来请输入字符串,输入‘end’退出");
        do {
            str = br.readLine();
            System.out.println(str);
        } while (!str.equals("end"));
    }
    public static void IoReadFile() throws IOException{
        /**
         * JavaIO流之文件
         */
        //字符方式读取写入文件
        File f = new File("a.txt");
        FileOutputStream fop = new FileOutputStream(f);
        // 构建FileOutputStream对象,文件不存在会自动新建
        OutputStreamWriter writer = new OutputStreamWriter(fop, "UTF-8");
        // 构建OutputStreamWriter对象,参数可以指定编码,默认为操作系统默认编码,windows上是gbk
        writer.append("中文输入");
        writer.append("\r\n");
        writer.append("English");
        writer.close();
        fop.close();

        FileInputStream fip = new FileInputStream(f);
        InputStreamReader reader = new InputStreamReader(fip, "UTF-8");
        // 构建InputStreamReader对象,编码与写入相同
        StringBuffer sb = new StringBuffer();//读取缓冲区
        while (reader.ready()) {
            sb.append((char) reader.read());
            // 转成char加到StringBuffer对象中
        }
        System.out.println(sb.toString());
        reader.close();
        fip.close();
        
        //流方式读取 写入图片
        byte[] by = new byte[4];
        InputStream is = new FileInputStream("aa.jpg");
        OutputStream os = new FileOutputStream("b.jpg");
        while(is.read(by)!=-1)
        {
            os.write(by); 
        }
        os.close();
        is.close();
    }
    public static void IoDir(){
        /**
         * JavaIO流之文件夹
         */
        File fordir = new File("E:/testtext/hell/e");
        fordir.mkdirs();//创建文件夹
        //fordir.createNewFile();
        System.out.println(fordir.isDirectory());//判断是否是一个文件夹
        //查看文件夹里的内容
        String s[] = fordir.list();
        for (int i = 0; i < s.length; i++) {
            File f1 = new File(fordir + "/" + s[i]);
            if (f1.isDirectory()) {
                System.out.println(s[i] + " 是一个目录");
            } else {
                System.out.println(s[i] + " 是一个文件");
            }
        }
        //删除文件夹
        File fordel = new File(fordir + "/"+ "1");
        fordel.mkdir();
        fordel.delete();
    }
}

相关文章

  • java基础-day20-IO流和StringBuffer

    IO流和StringBuffer 1. IO流 1.1 IO流概述 1.2 IO流分类 1.3 文件操作输入输出字...

  • 文件IO流

    从控制台读取输出字符从文件中写入读取字符从文件中写入读取字节文件夹操作 1. 从控制台读取输出字符 输入由Syst...

  • Java 流(Stream)、文件(File)和IO

    Java 流(Stream)、文件(File)和IO 简介 1.什么是流,什么是文件,什么是IO? 一个流可以理解...

  • java_io

    java.io.File类的使用IO原理及流的分类  |---文件流   操作对象是文件     FileInp...

  • Java的IO流

    一、IO流概述 IO流:Java对数据的操作是通过流的方式,IO流用来处理设备之间的数据传输,上传文件和下载文件,...

  • JavaSE进阶九 IO流一

    1,IO流的概述 IO流,什么是IO? I:Input O:Output 通过IO可以完成硬盘文件的读和写。...

  • 19-io_文件权限掩码_动态库_静态库

    I/O * 标准IO:库 带缓存 通过流FILE * 操作文件 * 文件IO...

  • Day 16

    文件File 路径 IO流 流中的异常处理

  • 【JavaSE(十三)】JavaIO流(中)

    1 IO流 1.1 IO流概述 Java中使用 IO流 来读取和写入,读写设备上的数据、硬盘文件、内存、键盘等等,...

  • JAVA API-day07

    A 基本的IO操作 文件流 缓冲流 节点流和处理流 对象流

网友评论

      本文标题:文件IO流

      本文链接:https://www.haomeiwen.com/subject/nmhbmftx.html