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.txtif (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-8System.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();//用完之后,要关闭}
}

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

哈夫曼树和哈夫曼编码

现在需要对下列字符编码 其中我么你发现A 出现三次,B出现一次,C出现两次,D出现一次 那么我们统计出现次数为:3,2,1,1 我们将1,1组成一个树 现在统计次数变为3,2&#x…

Java—继承性与多态性

目录 一、this关键字 1. 理解this 2. this练习 二、继承性 2.1 继承性的理解 2.1.1 多层继承 2.2 继承性的使用练习 2.2.1 练习1 2.2.2 练习2 2.3 方法的重写 2.4 super关键字 2.4.1 子类对象实例化 三、多态性 3.1 多态性的理解 3.2 向下转型与多态练习 四、Ob…

构建高效作业管理平台:Spring Boot师生协作评审系统

1系统概述 1.1 研究背景 如今互联网高速发展,网络遍布全球,通过互联网发布的消息能快而方便的传播到世界每个角落,并且互联网上能传播的信息也很广,比如文字、图片、声音、视频等。从而,这种种好处使得互联网成了信息传…

神经网络超参数优化

遗传算法与深度学习实战(16)——神经网络超参数优化 0. 前言1. 深度学习基础1.1 传统机器学习1.2 深度学习 2. 神经网络超参数调整2.1 超参数调整策略2.2 超参数调整对神经网络影响 3. 超参数调整规则小结系列链接 0. 前言 我们已经学习了多种形式的进化…

鸿蒙开发实战项目【硅谷租房】--- 项目介绍

目录 一、简述 二、项目资料 2.1 UI设计稿 2.2 服务器 2.3 Apifox接口JSON文件 使用 Apifox 测试接口 一、简述 这是一个基于 鸿蒙 API12 开发的移动端租房 App,用户可以使用该应用搜索租房列表、查看房屋详情、预约租房等。 该项目的tabbar包含五部分&…

网站集群批量管理-Ansible(ad-hoc)

1. 概述 1. 自动化运维: 批量管理,批量分发,批量执行,维护 2. 无客户端,基于ssh进行管理与维护 2. 环境准备 环境主机ansible10.0.0.7(管理节点)nfs01 10.0.0.31(被管理节点)backup10.0.0.41(被管理节点) 2.1 创建密钥认证 安装sshpass yum install -y sshpass #!/bin/bash ##…

Android终端GB28181音视频实时回传设计探讨

技术背景 好多开发者,在调研Android平台GB28181实时回传的时候,对这块整体的流程,没有个整体的了解,本文以大牛直播SDK的SmartGBD设计开发为例,聊下如何在Android终端实现GB28181音视频数据实时回传。 技术实现 Andr…

操作系统导论阅读 - 虚拟化

近期系统性地过一下操作系统导论 第二章 操作系统介绍 冯诺伊曼架构 冯诺依曼架构的核心思想: 使用二进制存储数据像存储数据一样来存储程序计算机由输入设备,输出设备以及控制器,运算器和存储器五部分组成 通常使用的键盘,…

SevenZip++显示当前压缩进度的范例

以前写7z压缩工具,直接调用命令行的话,因为无法提取命令行的压缩进度所以无法在界面上显示当前压缩进度,现在用SevenZip,成功提取到了压缩到7z过程中的压缩进度,先在命令行中展示一下效果吧。 直接上代码,看…

企业架构系列(19)TOGAF企业连续体和构建块

TOGAF 企业连续体(Enterprise Continuum)是一个用于对架构描述进行分类的框架。它有助于突出架构师在哪个抽象层次上工作,并概述了不同目的下应使用的不同层次。而构建块(Building Blocks)是用来描述这些架构和解决方案…

机器学习——自动化机器学习(AutoML)

机器学习——自动化机器学习(AutoML) 自动化机器学习(AutoML)——2024年的新趋势什么是AutoML?AutoML的关键组成部分AutoML的优势AutoML 实例:使用Auto-sklearn进行回归分析AutoML的应用领域2024年值得关注…

高效的读书与笔记管理:打造个人知识体系

01 读书学习的常见问题 1、读书⼯具分散,划线和笔记分散,导致我们的复习、搜索效率低。⽐如不同书籍中,提到了同⼀个问题的观点,很难进行关联。 2、读书,仅限于读,知道别⼈的观点,但是缺乏内…

【Qt】控件概述(3)—— 显示类控件

显示类控件 1. QLabel——标签1.1 setPixmap设置图片1.2 setAlignment设置文本对齐方式1.3 setWordWrap设置自动换行1.4 setIndent设置缩进1.5 setMargin设置边距1.6 body 2. QLCDNumber2.1 使用QTimer实现一个倒计时效果2.2 使用循环的方式实现倒计时 3. QProgressBar——进度…

商贸物流痛点解析

商贸物流痛点解析 在当今全球化的商业环境中,商贸与物流之间的紧密协作已成为业务成功的关键因素。然而,许多组织面临着信息不对称、资源配套不足以及系统间隔离等痛点,这些问题严重阻碍了商贸体系与物流、仓储和园区的有效联动,…

Linux高效查日志命令介绍

说明:之前介绍Linux补充命令时,有介绍使用tail、grep命令查日志; Linux命令补充 今天发现仅凭这两条命令不够,本文扩展介绍一下。 命令一:查看日志开头 head -n 行数 日志路径如下,可以查看程序启动是否…

数据库SQL基础教程(二)

目录 连接(JOIN) 语法: 不同的 SQL JOIN INNER JOIN 关键字 LEFT JOIN 关键字 SQL LEFT JOIN 语法 RIGHT JOIN 关键字 SQL RIGHT JOIN 语法 FULL OUTER JOIN 关键字 SQL FULL OUTER JOIN 语法 UNION 操作符 SQL UNION 语法 SQL UNION ALL 语法 SELECT I…

uniapp引入ThorUI的方法

1、下载文件 2、复制相应的文件除了pages 3、往项目中复制即可 4、引入即可实现 5、添加easycome自动引入

单片机(学习)2024.10.9

目录 汇编整体分类 1.指令 2.伪操作 3.伪指令 汇编代码 汇编初始化 数据搬运指令 算术运算指令 加法 减法 乘法 比较指令 跳转指令 逻辑运算指令 与或,异或 左移右移 内存操作 LOAD/STORE 指令 写 读 CPU的栈机制 栈的概念 栈的种类 1.空栈(…

Java生成Excel_低内存占用_更快

EasyExcel:高效Java Excel工具,解决大文件读写难题 EasyExcel是一个基于Java的、快速简洁且能有效解决大文件内存溢出问题的Excel处理工具。它使得用户可以在无需过多关注性能和内存消耗的情况下,轻松实现Excel文件的读写功能。相较于传统的…

无头浏览器测试:如何使用 Puppeteer 和 Browserless?

什么是无头浏览器测试? 无头浏览器测试通常指没有头的物体或东西,在浏览器的语境中,它指的是没有 UI 的浏览器模拟。无头浏览器自动化使用 Web 浏览器进行端到端测试,而无需加载浏览器的 UI。 无头模式是一个功能,它…