java——io类输入输出文件

本文介绍了Java中处理文件输入输出的相关API,包括File类的功能,如查看目录下的文件,以及二进制文件的读写操作,如使用InputStream和OutputStream进行内容输出。详细讲解了InputStream的read()方法,并提到了字符流的使用场景和字节流的选择依据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 输入输出文件

文件操作API:File类 操作文件与目录
字符流 - 读取 -》 文本文件(二进制): Reader类、Writer类 (内容的维护)
字节流 - 读取 --》二进制文件:InputStream类、OutputStream类 (内容的维护)
在这里插入图片描述
在这里插入图片描述

File类

Pathname:			文件名(路径)
URI:				http://www.baidu.com/index.txt
查看一个目录下的所有文件:
        File file=new File("d:"+File.separator);
        String[] files=file.list();
        for (String name:files) {
            File file1=new File("d:\\"+name);
            if(file1.isDirectory())
            System.out.println("{"+name+"}");
            else
                System.out.println(name);
        }

在这里插入图片描述
list()返回文件目录字符串列表
isDirectory() 是否为目录

在这里插入图片描述

在这里插入代码片
file1.renameTo(new File("d:\\Test\\"+"dts"+name));     //修改名字
file1.delete();     //不能删除非空目录

二进制文件: InputStrem,OutputStream类

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

内容输出到文件:
        File file=new File("d:"+ File.separator+"Test\\"+"dts.txt");
        try {
            OutputStream outputStream=new FileOutputStream(file,true);
            System.out.println("请输入(退出):");
            Scanner scanner=new Scanner(System.in);
            String s=scanner.next();
            while (!s.equals("退出")) {
                outputStream.write(s.getBytes());
                s=scanner.next();
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

outputStream.write('d');		//写入字符

在这里插入图片描述
在这里插入图片描述

文件读取

在这里插入图片描述

通过string方法输出

在这里插入图片描述

InputStream的read()方法:

在这里插入图片描述

代码:
  	File file=new File("d:"+ File.separator+"Test\\"+"dts.txt");
       try {
            InputStream inputStream=new FileInputStream(file);
            byte[] bytes=new byte[1024];
            int position=-1;
            while ((position=inputStream.read(bytes)) > -1){
                //bytes 有1024个空间,有效数据未必是1024
                System.out.println(new String(bytes,0,position,"gb2312"));
            }
            inputStream.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

在这里插入图片描述

在这里插入图片描述
FileInputStream 类的主要方法
• int read( ):一次读取一个字节,读到文件末尾返回-1.
• int read(byte[] b):一次读取字节数组长度的字符,批量读取提高读取效率.
• void close( ):关闭输入流子类
FileInputStream常用的构造方法
• FileInputStream(File file)如果文件不存在则抛出异常FileNotFoundException为兼容读取含中文的文本文件,应指定字符集,应配合: InputStreamReader类

复制文件

File file=new File("d:"+ File.separator+"Test\\"+"dts.txt");
  byte[] bytes=new byte[1024];
                try {
            InputStream inputStream=new FileInputStream(file);

            int position=-1;
            while ((position=inputStream.read(bytes)) > -1){
                //bytes 有1024个空间,有效数据未必是1024
                System.out.println(new String(bytes,0,position,"gb2312"));
            }
            inputStream.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        try {
            OutputStream outputStream=new FileOutputStream("d:"+ File.separator+"Test\\"+"dts1.log");
            outputStream.write(bytes);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

字符流

字符流跟字节流用法基本一致
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
何时使用字符流,何时使用字节流?依据是什么?
• 使用字符流的应用场景: 如果是读写字符数据的时候
则使用字符流。
• 使用字节流的应用场景: 如果读写的数据都不需要转
换成字符的时候,则使用字节流。如:图片、音乐、电
影、数据库备份、office文档。
在这里插入图片描述

·字符流的缓冲区 BufferedWriter类
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值