JAVA基础 day12

一、File、IO流

File是java.io.包下的类,file类的对象,用于代表当前操作系统的文件(可以代表文件、文件夹),使用File可以操作文件及文件夹。

注意:File只能对文件本身进行操作,不能读写文件里的数据。

IO流是用于读写数据的。(读写文件、网络中的数据)

1.1认识File类

//目标:创建File对象代表文件(文件/目录),获取文件,目录信息
public class FileDemo1 {
    public static void main(String[] args) throws IOException {
        //1.创建file对象,去代表某个文件
        File f1 = new File("D:\\JavaCode\\JavaLearnDay01\\day11_FileAnd_IO\\1.png");
        System.out.println(f1.length()); // 获取字节个数
        System.out.println(f1.getAbsolutePath());
        //2.可以使用相对路径定位文件对象:只要带盘符的都是绝对路径
        //相对路径:不带盘符,默认是在idea工程下去找文件
        File f2 = new File("day11_FileAnd_IO\\src\\kfc.txt");
        System.out.println(f2.length());

        //File也可以新建文件
        File f3 = new File("D:\\JavaCode\\JavaLearnDay01\\day11_FileAnd_IO\\2.txt");
        System.out.println(f3.exists());//判断文件是否存在
        System.out.println(f3.createNewFile());//把这个文件创建出来

        //File新建文件夹 只能创建一级文件夹
        File f4 = new File("day11_FileAnd_IO\\src\\kkk");
        System.out.println(f4.mkdir());//mkdirs可以创建多级文件

        //创建对象代表存在的文件,然后删除它
        File f5 = new File("D:\\JavaCode\\JavaLearnDay01\\day11_FileAnd_IO\\1.txt");
        System.out.println(f5.delete());

        //获取某个目录下全部一级文件名称
        File f6 = new File("D:\\JavaCode\\JavaLearnDay01");
        String[] names = f6.list();
//        for (String name : names) {
//            System.out.println(name);
//        }
        File[] files = f6.listFiles();
        for(File file : files) {
            System.out.println(file.getName());
        }


    }
}

1.2 方法递归、文件搜索

import java.io.File;
//需求,想找到d盘里有没有kfc.txt
//使用递归搜索
public class FileDemo2 {
    public static void main(String[] args) {
        File f = new File("D://JavaCode");
        search(f, "kfc.txt");

    }

    public static void search(File dir, String name) {
        //1。判断极端情况
        if (dir == null || !dir.exists() || !dir.isDirectory()) {
            return;
        }
        //2.获取该目录下所有的一级文件或文件夹对象
        File[] files = dir.listFiles();

        //3.判断当前目录下是否存在一级文件对象,存在才能继续遍历
        if (files != null && files.length > 0) {
            for (File file : files) {//开始遍历
                if (file.isFile()) {//遍历到文件了,判断是否是kfc.txt
                    if (file.getName().equals(name)) {
                        System.out.println("找到目标文件" + file.getAbsolutePath());
                    }

                }else{
                    search(file, name);//不是文件,则继续遍历
                }
            }

        }

    }
}

二、字符集

学习IO流读写数据的前置知识,了解数据在底层是如何存储的

2.1字符集的编码,解码操作

import java.io.IOException;
import java.util.Arrays;

//写程序实现字符的编码与解码
public class CharSet1 {
    public static void main(String[] args) throws IOException {
        //1.编码
        String name = "疯狂星期四KFCvivo50!";
        byte[] bytes = name.getBytes("GBK"); //指定字符集,java默认是utf-8
        System.out.println(Arrays.toString(bytes));
        System.out.println(bytes.length);

        //2.解码
        String decode = new String(bytes, "GBK");
        System.out.println(decode);


    }
}

三、IO流

3.1认识IO流

I指的是input,负责把数据从内存(程序)输入到磁盘、网络中去,O则相反,指的是把数据数出来。

四大金刚本身是抽象类,要使用他们的实现类来做功能

3.2文件字节输入流

作用:把磁盘文件中的数据,以字节的形式读入到内存中去。

//目标:读取字节数据
public class FileInputStream1 {
    public static void main(String[] args) throws IOException {
        //1.创建文件字节输入流管道,与文件接通
        InputStream irs = new FileInputStream("day11_FileAnd_IO\\2.txt");
        //2.读取文件中的字节并输出:每次读取一个字节
        //定义一个变量来记住每次读取的一个字节
//        int b ;
//        while((b = irs.read()) != -1){
//            System.out.println((char)b);
//        }

        //每次只读取一个字节的问题:性能较差,并且读取汉字输出一定会乱码

        //3.定义一个字节数组,用于每次读取字节,
//        byte[] buffer = new byte[2]; // 代表每次读几个字节
//        //定义一个变量,用来记住每次读了多少个字节
//        int len;
//        while ((len = irs.read(buffer)) != -1) {
//            //把读取的字节转换成字符串输出
//            String s = new String(buffer,0,len);//读取多少,输出多少,0表示从第一个位置开始,len代表倒多少个
//            System.out.println(s);
//
//        }
//        //每次读取多个字节,可以提升性能,但依然无法避免读取汉字输出乱码的问题。存在截断汉字字节的可能性

        //java提供了一次性读完全部字节的方法:public byte[] readAllBytes(),可以直接把文件的全部字节读取到一个数组中返回
        byte[] all = irs.readAllBytes();
        String s2 = new String(all);
        System.out.println(s2);


    }
}

3.3文件字节输出流

//目标:学会文件字节输出流
public class FileOutputStream01 {
    public static void main(String[] args) throws IOException {
        //1.创建文件字节输出流管道与目标文件接通
        OutputStream os = new FileOutputStream("day11_FileAnd_IO\\out.txt");
        //2.写入字节
        os.write(97);
        os.write("\r\n".getBytes());//换行,这是固定搭配
        os.write('a');
//        os.write('我'); 会乱码
        byte[] bytes= {97,96,98};
        os.write(bytes); // 写入一个字节数组
        os.close();//用完之后,要关闭

    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/889933.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Redis到底是单线程还是多线程的?详解

1. Redis是单线程还是多线程的? Redis 的核心执行模型是单线程的,但自 Redis 6.0 版本起,在特定场景下支持了多线程处理。 1.1. Redis 的核心执行是单线程的 Redis 的单线程指的是 Redis 的⽹络 IO 以及键值对指令读写是由⼀个线程来执⾏的…

Unity实现自定义图集(四)

以下内容是根据Unity 2020.1.0f1版本进行编写的   在之前的篇章中已经把自定义图集在编辑器上的使用,以及运行时所需的信息都准备好了,接下来就是魔改UGUI的Image组件,使其能够像Image那样运行时如果引用的资源有打自定义图集,则加载对应自定义图集的Texture。 1、思路 …

【C语言】指针练习题

一、指针指向问题 int main() {int a[5] { 1, 2, 3, 4, 5 };int* ptr (int*)(&a 1);printf("%d,%d", *(a 1), *(ptr - 1));return 0; } 结果为:2,5。&a是整个数组(&a 1)被强转为(int*&am…

使用 Helsinki-NLP 中英文翻译本地部署 - python 实现

通过 Helsinki-NLP 本地部署中英文翻译功能。该开源模型性价比相对高,资源占用少,对于翻译要求不高的应用场景可以使用,比如单词,简单句式的中英文翻译。 该示例使用的模型下载地址:【免费】Helsinki-NLP中英文翻译本…

效率提高——自动登录校园网(河海大学)与模拟点击与输入获取最新消息

文章目录 零、前言一、自动登录校园网1.1 快速锁定小工具1.2 版本问题1.3 出现进程未结束的情况1.4 关于chromedriver.exe1.5 打包ico图片格式 二、获取信息门户最新消息参考文章 零、前言 最近被校园网弄的也是比较烦心,而且准备远程弄弄这些玩具,为以…

PostgreSQL数据库安全管理,细节都在这里了

📢📢📢📣📣📣 作者:IT邦德 中国DBA联盟(ACDU)成员,10余年DBA工作经验, Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主,全网粉丝10万 擅长主流Oracle、My…

创建一个c#程序,实现字符串类型转整数类型

首先,创建一个c#程序 在代码编辑器中编写代码,点击Run按钮或者按下F5键来运行程序。 下面,编写将字符串类型转换为整数类型的代码。 sing System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Task…

基于单片机的书库环境监测

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于51单片机,采用DHT11湿度传感器检测湿度,DS18B20温度传感器检测温度, 采用滑动变阻器连接数模转换器模拟二氧化碳和氧气浓度检测,各项数值通过lc…

前端转换double数据,保留两位小数

Number Number(1.00) 1 Number(1.10) 1.1 Number(1.101) 1.101 要想前端展示页面按 1.00展示1,1.10 展示1.1 需要套一个number() 1.1 保留两位小数,并三位一个分隔符 indexView.value[key] formatNumber(indexView.value[key].toFixed(2))//格式…

五子棋项目自动化测试

目录 一、五子棋项目介绍 二、编写Web测试用例 三、自动化测试脚本开发 1、引入依赖 2、设计框架 3、Utils 4、LoginPage 5、RegisterPage 6、MatchPage 7、RunTest类 8、运行程序 一、五子棋项目介绍 五子棋项目是基于 WebSocket 实现的多人在线对战系统&#xff0…

【Vue】Vue 快速教程

Vue tutorial 参考:教程 | Vue.js (vuejs.org) 该教程需要前置知识:HTML, CSS, JavaScript 学习前置知识,你可以去 MDN Vue framework 是一个 JavaScript framework,以下简称 Vue,下面是它的特点 声明式渲染&#xff…

学习threejs,光晕效果

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言二、🍀光晕效果实现1. ☘…

powerbi之常用DAX函数使用介绍——提供数据源练习

前述: 本次使用数据是包含产品表、客户表、区域表、销售订单表的一份销售订单数据,数据源链接如下: 链接:https://pan.baidu.com/s/1micl_09hFrgz2aUBERkeZg 提取码:y17e 一、CALCULATE 1.语法结构 语法结构CALCUL…

使用Docker搭建WAF-开源Web防火墙VeryNginx

1、说明 VeryNginx 基于 lua_nginx_module(openrestry) 开发,实现了防火墙、访问统计和其他的一些功能。 集成在 Nginx 中运行,扩展了 Nginx 本身的功能,并提供了友好的 Web 交互界面。 文章目录 1、说明1.1、基本概述1.2、主要功能1.3、应用场景2、拉取镜像3、配置文件4、…

多线程——线程安全

目录 前言 一、观察线程不安全 二、线程安全概念 三、产生线程安全问题的原因 1.分析示例代码 2.线程随机调度 3.修改共享数据 4.原子性 5.可见性 6.指令重排序 四、解决示例代码的问题 结尾 前言 我们学习多线程编程的目的是为了能够实现“并发编程”,…

LSTM的变体

一、GRU 1、什么是GRU 门控循环单元(GRU)是一种循环神经网络(RNN)的变体,它通过引入门控机制来控制信息的流动,从而有效地解决了传统RNN中的梯度消失问题。GRU由Cho等人在2014年提出,它简化了…

C语言 | Leetcode C语言题解之第466题统计重复个数

题目&#xff1a; 题解&#xff1a; #include <stdlib.h> #include <stdio.h> #include <stdbool.h> #include <string.h> #include <math.h> #include <limits.h>#define MMAX(a, b) ((a) > (b)? (a) : (b)) #define MMIN(a,…

【项目】五子棋对战测试报告

目录 一、项目背景 二、项目功能 三、测试计划 1、功能测试&#xff1a; &#xff08;1&#xff09;测试用例&#xff1a; &#xff08;2&#xff09;实际执行测试的部分操作/截图 2、自动化测试 3、性能测试 一、项目背景 1、五子棋对战游戏 采用了前后端分离的方法来…

GO网络编程(七):海量用户通信系统5:分层架构

P323开始&#xff08;尚硅谷GO教程&#xff09;老韩又改目录结构了&#xff0c;没办法&#xff0c;和之前一样&#xff0c;先说下目录结构&#xff0c;再给代码&#xff0c;部分代码在之前讲过&#xff0c;还有知识的话由于本人近期很忙&#xff0c;所以这些就不多赘述了&#…

web自动化测试基础(从配置环境到自动化实现登录测试用例的执行,vscode如何导入自己的python包)

接下来的一段时间里我会和大家分享自动化测试相关的一些知识希望大家可以多多支持&#xff0c;一起进步。 一、环境的配置 前提安装好了python解释器并配好了环境&#xff0c;并安装好了VScode 下载的浏览器和浏览器驱动需要一样的版本号(只看大版本)。 1、安装浏览器 Chro…