当前位置: 首页 > news >正文

JAVA,IOIOIOIOIOIOIOIOIOIOIOIOIOIO

IO流

1 File类

package cn.javasm.demo;
​
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
​
public class TestDemo {public static void main(String[] args) throws IOException {//表示创建了一个指向D盘下的test的file对象// file对象在创建的时候不会去检查文件是否真实存在// 仅仅是将当前的路径标记为一个file对象File file = new File("D:\\sdfdf\\dfdf\\dfd");
​// 创建目录  当且仅当目录不存在时才会创建
//        boolean mkdir = file.mkdir();// 创建目录  可以创建多级目录
//        boolean mkdir = file.mkdirs();
//        System.out.println(mkdir);// 创建文件  当且仅当文件不存在时才会创建
//        boolean newFile = file.createNewFile();
//        System.out.println(newFile);// 删除文件/目录// 是从计算机中彻底删除// 如果是目录,并且这个目录非空,则删除失败
//        boolean delete = file.delete();
//        System.out.println(delete);// 获取目录下的所有的子目录和子文件
//        File[] files = file.listFiles();
//        for (File file1 : files) {
//            System.out.println(file1);
//        }// 判断file是否是文件
//        System.out.println(file.isFile());
//        // 判断file是否是目录
//        System.out.println(file.isDirectory());
//        del(file);
//        boolean b = file.canWrite();
//        System.out.println(b);
//        // 判断文件或者目录是否存在
//        boolean exists = file.exists();
//        System.out.println(exists);// 获取绝对路径:从盘符开始的路径// 相对路径:相对于某个目录的路径
//        String absolutePath = file.getAbsolutePath();
//        System.out.println(absolutePath);
​// 获取剩余空间  单位字节long freeSpace = file.getFreeSpace();System.out.println(freeSpace);// 获取总空间long totalSpace = file.getTotalSpace();System.out.println(totalSpace);// 获取可用空间long usableSpace = file.getUsableSpace();System.out.println(usableSpace);
​//        // 获取目录/文件  名称
//        // separatorChar-- 目录分隔符  在Windows系统是 \\  在Linux中用/表示// pathSeparatorChar -- 路径分隔符  在Windows系统是;   在Linux中是:
//        String name = file.getName();
//        System.out.println(name);
//
//        String parent = file.getParent();
//        System.out.println(parent);
//
//        // 判断是否是绝对路径
//        System.out.println(file.isAbsolute());
//        // 判断是否是隐藏文件
//        System.out.println(file.isHidden());
//        // 获取修改时间距离1970年1月1日的毫秒值
//        System.out.println(file.lastModified());
​// 获取目录或文件名称中带数字的内容  匿名内部类
//        File[] files = file.listFiles(new FileFilter() {
//            // 把所有的子目录和子文件通过参数传递到这个方法中
//            // 如果返回true,对应的内容会留在结果中
//            // 如果返回false,对应的内容会被筛选掉
//            @Override
//            public boolean accept(File file1) {
//                return file1.getName().matches(".*\\d.*");
//            }
//        });
//        File[] files = file.listFiles(f -> f.getName().matches(".*\\d.*"));
​
//        File[] files = file.listFiles(new FilenameFilter() {
//            // dir  上一级目录
//            // name 当前的目录/文件名称
//            @Override
//            public boolean accept(File dir, String name) {
//                return name.matches(".*\\d.*");
//            }
//        });
//        File[] files = file.listFiles((d, n) -> n.matches(".*\\d.*"));
//        for (File file1 : files) {
//            System.out.println(file1);
//        }// 移动并且重命名
//        boolean b = file.renameTo(new File("D:\\test\\西游记.txt"));
//        System.out.println(b);// 设置文件只读
//        file.setReadOnly();// 设置是否可写
//        file.setWritable(true);
​// 距离计算机元年的毫秒值// 设置修改时间file.setLastModified(1000L);}
​// 课堂练习:删除一个目录public static void del(File file){if (file.isDirectory()){// 如果是目录,获取目录中的所有的子目录和子文件File[] files = file.listFiles();for (File file1 : files) {del(file1);}}
​// 删除目录/文件file.delete();}
}
​

课堂练习:统计工作空间中共有多少个java和class文件

static int javaCount = 0;static int classCount = 0;public static void count(File file){if (file.isDirectory()){// 获取所有的子目录和子文件File[] files = file.listFiles();for (File file1 : files) {count(file1);}}else if (file.getName().endsWith(".java")){javaCount++;}else if (file.getName().endsWith(".class")){classCount++;}}

2 IO流

2.1 概述

IO流:传输数据的一套机制

I: input 输入流

O:output 输出流

在java中分为字符流和字节流

字符流:只能读写纯文本的内容

字节流:可以读写所有的文件

输入流输出流
字符流ReaderWriter
字节流InputStreamOutputStream

以上的四个类都是抽象类

2.2 FileWriter类

FileWriter类是字符输出流

public static void main(String[] args) {FileWriter fileWriter = null;try {// 创建字符输出流// 创建一个新文件// 如果原文件不存在,则使用创建的这个新文件// 如果原文件已存在,怎使用新文件覆盖原文件// append:追加访问fileWriter = new FileWriter("a.txt",true);// 向文件中写出一个字符串fileWriter.write("你好中国");// 冲涮缓冲区fileWriter.flush();} catch (IOException e) {throw new RuntimeException(e);} finally {// 释放资源  释放资源的时候会自动冲涮一次缓冲区try {if (fileWriter != null){fileWriter.close();}} catch (IOException e) {throw new RuntimeException(e);}finally {// 标记成垃圾对象fileWriter = null;}
​}
​
​}

2.3 FileReader类

public static void main(String[] args) throws IOException {// 创建字符输入流// 会检查路径是否真实存在FileReader fileReader = new FileReader("a.txt");// 一次读取一个字符,如果读取结束,返回-1
//        int read = fileReader.read();
//        System.out.println((char)read);
//        int ch;
//        while ((ch = fileReader.read()) != -1){
//            System.out.println((char)ch);
//        }// 创建缓冲数组char[] chs = new char[5];// 把数据读取到数组中,并且返回实际读取到的内容
//        int len = fileReader.read(chs);
//        System.out.println(len);
//        System.out.println(chs);int len;while ((len = fileReader.read(chs)) != -1){System.out.print(new String(chs,0,len));}
​// 释放资源fileReader.close();}

课堂练习:拷贝一个文本文件

public static void main(String[] args) throws IOException {// 拷贝文件// 创建字符输入和输出流  Charset:可以指定编码格式FileReader fileReader = new FileReader("D:\\西游记.txt", Charset.forName("gbk"));FileWriter fileWriter = new FileWriter("D:\\test\\三国演义.txt",Charset.forName("gbk"));
​// 定义实际读取到的长度int len;// 定义缓冲数组char[] chs = new char[1024 * 8];while ((len = fileReader.read(chs)) != -1){// 写出到新的文件中fileWriter.write(chs,0,len);}
​// 关流  从里到外关fileWriter.close();fileReader.close();}

2.4 BufferedReader和BufferedWriter

高效的字符流,里面自带缓冲区

public static void main(String[] args) throws IOException {// 拷贝文件BufferedReader bufferedReader = new BufferedReader(new FileReader("D:\\15681.txt"));BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("D:\\石头记.txt"));
​String str = null;while ((str = bufferedReader.readLine()) != null){bufferedWriter.write(str);// 换行bufferedWriter.newLine();}
​// 释放资源bufferedWriter.close();bufferedReader.close();}
​private static void demo1() throws IOException {//        FileReader fileReader = new FileReader("D:\\西游记.txt", Charset.forName("gbk"));
//        // 使用装饰设计模式创建字符输入流
//        BufferedReader bufferedReader = new BufferedReader(fileReader);
//        // 一次读取一行字符串   读取到换行符结束 不包含换行符  读取不到返回null
//        String s = bufferedReader.readLine();
//        System.out.println(s);
//        String str = null;
//        while ((str = bufferedReader.readLine()) != null){
//            System.out.println(str);
//        }
//
//        // 释放资源
//        bufferedReader.close();
​// 创建字符输出流BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("D:\\a.txt"));bufferedWriter.write("水浒传");// 换行bufferedWriter.newLine();// 释放资源bufferedWriter.close();}

java23种常用设计模式之一:装饰者设计模式

模式:针对某一类问题的统一的处理方法

设计模式:在软件开发中针对遇到的问题所提供的统一的解决方案

装饰设计模式:利用同类对象来构建本类对象,然后对所构建的对象进行功能的改善和增强。

课堂练习:统计工作空间中代码的行数

public static void count(File file) throws IOException {if (file.isDirectory()){// 查找子目录和子文件File[] files = file.listFiles();for (File file1 : files) {count(file1);}}else if (file.getName().endsWith(".java")){//判断是否是java文件BufferedReader bufferedReader = new BufferedReader(new FileReader(file));while (bufferedReader.readLine() != null){count++;}bufferedReader.close();}}

2.5 字节流

private static void demo2() throws IOException {// 创建字节输入流对象FileInputStream fileInputStream = new FileInputStream("D:\\西游记.txt");// 一次读取一个字节
//        fileInputStream.read();// 创建字节缓冲数组byte[] bys = new byte[1024];int len;while ((len = fileInputStream.read(bys)) != -1){System.out.print(new String(bys,0,len,"gbk"));}// 释放资源fileInputStream.close();}
​private static void demo1() throws IOException {// 创建字节输出流对象FileOutputStream fileOutputStream = new FileOutputStream("D:\\aaa.txt");
​// 写出数据fileOutputStream.write("周杰伦".getBytes("gbk"));
​// 释放资源fileOutputStream.close();}

  • 拷贝文件

private static void demo3() throws IOException {FileInputStream fileInputStream = new FileInputStream("D:\\win2020-2024(一键激活)pro.zip");FileOutputStream fileOutputStream = new FileOutputStream("D:\\test\\1010.zip");
//        int len;
//        byte[] bys = new byte[1024];
//        while ((len = fileInputStream.read(bys)) != -1){
//            fileOutputStream.write(bys,0,len);
//        }// 读取所有的字节
//        byte[] bytes = fileInputStream.readAllBytes();
//        fileOutputStream.write(bytes);// fileInputStream.available() 读取到的最大字节byte[] bys = new byte[fileInputStream.available()];fileInputStream.read(bys);fileOutputStream.write(bys);// 关闭资源fileOutputStream.close();fileInputStream.close();}


文章转载自:

http://wn3INyrx.nysjb.cn
http://whPMLVX9.nysjb.cn
http://ITtdXj26.nysjb.cn
http://UucO6Xrb.nysjb.cn
http://pl2iTZAM.nysjb.cn
http://FxUGzXdu.nysjb.cn
http://9dAQNiS4.nysjb.cn
http://xp6ks0QS.nysjb.cn
http://vPOSp0dh.nysjb.cn
http://nnpi48tJ.nysjb.cn
http://Sv1aNX36.nysjb.cn
http://CvXi2Z4x.nysjb.cn
http://qLQB8n6Q.nysjb.cn
http://O1C03KS2.nysjb.cn
http://e0mRbcSZ.nysjb.cn
http://aktzUEUf.nysjb.cn
http://fhACxXCv.nysjb.cn
http://KzrqMYeZ.nysjb.cn
http://J9ofY1RC.nysjb.cn
http://hru2IRlG.nysjb.cn
http://6CmXeUDT.nysjb.cn
http://8nhlnx11.nysjb.cn
http://gDuA6vQM.nysjb.cn
http://NhtVa0iI.nysjb.cn
http://khsECWBM.nysjb.cn
http://jLky1sJp.nysjb.cn
http://dW3lo3N0.nysjb.cn
http://B6XqoJG2.nysjb.cn
http://AitGeHXp.nysjb.cn
http://6BKz7nuU.nysjb.cn
http://www.dtcms.com/a/375006.html

相关文章:

  • xv6 源码精读(一)环境搭建
  • 基于Golang + vue3 开发的 kafka 多集群管理
  • uniapp微信小程序商品列表数据分页+本地缓存+下拉刷新+图片懒加载
  • OSPF特殊区域、路由汇总及其他特性
  • 后端接口防止XSS漏洞攻击
  • Hadoop(十一)
  • 【Linux基础知识系列:第一百二十五篇】理解Linux中的init与systemd
  • iOS原生开发和Flutter开发的看法
  • 【ArkTS-装饰器】
  • XSS漏洞检测和利用
  • Vue3 生命周期函数
  • Flask/Django 生产部署:Gunicorn vs Nginx,Windows 与 Linux 实战指引
  • 从 Row 到 WaterFlow:鸿蒙应用开发ArkUI布局全家桶教程
  • 开发避坑指南(44):Mybatis-plus QueryWrapper and()拼接嵌套复杂条件的技巧
  • 消息队列(MQ)初级入门:详解RabbitMQ与Kafka
  • R语言对excel中多个sheet子表批量进行地理探测器计算
  • 开讲啦| MBSE公开课:第六集 MBSE远期目标与总结(完结)
  • 实习项目包装--HTTP 协议和 Web API
  • linux升级系统,重启出现Minimal BASH-like line editingis supported
  • ARM架构---指令集分类、内核组成,RAM与ROM的分类、工作模式、异常处理机制、立即数、s后缀、指令说明、汇编和 C 函数的相互调用
  • Qwen3微调教程:从零开始训练你的定制语言模型
  • 本地一键部署IndexTTS2,生成情绪饱满的语音,支持Windows和Mac
  • VMware虚拟机CentOS磁盘扩容完整指南(解决growpart报错 LVM扩容)
  • 【增删改查操作】
  • MySQL 多表操作与复杂查询:深入理解多表关系和高级查询
  • 网络相关知识整理
  • 提升网站用户体验的方法 | 网站优化与用户界面设计
  • CSS的文本样式
  • Flex布局——详解
  • 深度解析CSS单位与媒体查询:构建现代化响应式布局的核心技术