Java File类和IO流

news2024/11/24 4:41:39

1. File类

1.1 File对象创建

注意:

  • 路径中"\"要写成"\\", 路径中"/"可以直接用 
  • File对象可以指代一个不存在的文件路径
  • 路径中带盘符是绝对路径,不带盘符是相对路径

1.2 File判断和获取方法

1.3 创建和删除方法

/**
 * 目标:掌握File创建和删除文件相关的方法。
 */
public class FileTest3 {
    public static void main(String[] args) throws Exception {
        // 1、public boolean createNewFile():创建一个新文件(文件内容为空),
            创建成功返回true,反之。
        File f1 = new File("D:/resource/itheima2.txt");
        System.out.println(f1.createNewFile());

        // 2、public boolean mkdir():用于创建文件夹,
            注意:只能创建一级文件夹
        File f2 = new File("D:/resource/aaa");
        System.out.println(f2.mkdir());

        // 3、public boolean mkdirs():用于创建文件夹,
            注意:可以创建多级文件夹
        File f3 = new File("D:/resource/bbb/ccc/ddd/eee/fff/ggg");
        System.out.println(f3.mkdirs());

        // 3、public boolean delete():删除文件,或者空文件,
        注意:不能删除非空文件夹。
        System.out.println(f1.delete());
        System.out.println(f2.delete());
        File f4 = new File("D:/resource");
        System.out.println(f4.delete());
    }
}

1.4 遍历文件夹

 

  • 当主调是文件时,或者路径不存在时,返回null
  • 当主调是空文件夹时,返回一个长度为0的数组
  • 当主调是一个有内容的文件夹时,将里面所有一级文件和文件夹路径放在File数组中,并把数组返回
  • 当主调是一个文件夹,且里面有隐藏文件时,将里面所有文件和文件夹的路径放在FIle数组中,包含隐藏文件
  • 当主调是一个文件夹,但是没有权限访问时,返回null

2. 字符集

2.1 ASCII字符集

2.2 GBK字符集

中国人为了在计算机中存储中文,也编了一个中国人用的字符集叫做GBK字符集,这里面包含2万多个汉字字符,GBK中一个汉字采用两个字节来存储,为了能够显示英文字母,GBK字符集也兼容了ASCII字符集,在GBK字符集中一个字母还是采用一个字节来存储。  

需要我们注意汉字和字母的编码特点:

  • 如果是存储字母,采用1个字节来存储,一共8位,其中第1位是0
  • 如果是存储汉字,采用2个字节来存储,一共16位,其中第1位是1

例如存储 我i你

后续各个国家也有了自己的字符集,这就很混乱。

2.3 Unicode字符集

为了解决各个国家字符集互不兼容的问题,由国际化标准组织牵头,设计了一套全世界通用的字符集,叫做Unicode字符集。在Unicode字符集中包含了世界上所有国家的文字,一个字符采用4个字节存储。  

2.4 UTF-8

在Unicode字符集中,采用一个字符4个字节的编码方案,又造成另一个问题:如果是说英语的国家,他们只需要用到26大小写字母,加上一些标点符号就够了,本身一个字节就可以表示完,用4个字节就有点浪费。

于是又对Unicode字符集中的字符进行了重新编码,一共设计了三种编码方案。分别是UTF-32、UTF-16、UTF-8; 其中比较常用的编码方案是UTF-8 。

  • UTF-8是一种可变长的编码方案,共分为4个长度区
  • 英文字母、数字占1个字节,兼容(ASCII编码)
  • 汉字字符占3个字节
  • 极少数字符占4个字节

2.5 字符集小结

ASCII字符集:《美国信息交换标准代码》,包含英文字母、数字、标点符号、控制字符
	特点:1个字符占1个字节

GBK字符集:中国人自己的字符集,兼容ASCII字符集,还包含2万多个汉字
	特点:1个字母占用1个字节;1个汉字占用2个字节

Unicode字符集:包含世界上所有国家的文字,有三种编码方案,最常用的是UTF-8
    UTF-8编码方案:英文字母、数字占1个字节兼容(ASCII编码)、汉字字符占3个字节

2.6 编码和解码

就是起翻译作用,代码通过编码成二进制文件,电脑可以读懂。二进制文件解码成代码。

但是得用同一套字符集,不然会乱码。

/**
 * 目标:掌握如何使用Java代码完成对字符的编码和解码。
 */
public class Test {
    public static void main(String[] args) throws Exception {
        // 1、编码
        String data = "a我b";
        byte[] bytes = data.getBytes(); // 默认是按照平台字符集(UTF-8)进行编码的。
        System.out.println(Arrays.toString(bytes));

        // 按照指定字符集进行编码。
        byte[] bytes1 = data.getBytes("GBK");
        System.out.println(Arrays.toString(bytes1));

        // 2、解码
        String s1 = new String(bytes); // 按照平台默认编码(UTF-8)解码
        System.out.println(s1);

        String s2 = new String(bytes1, "GBK");
        System.out.println(s2);
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Kafka3.0.0版本——增加副本因子

目录 一、服务器信息二、启动zookeeper和kafka集群2.1、先启动zookeeper集群2.2、再启动kafka集群 三、增加副本因子3.1、增加副本因子的概述3.2、增加副本因子的示例3.2.1、创建topic(主题)3.2.2、手动增加副本存储 一、服务器信息 四台服务器 原始服务器名称原始服务器ip节点…

企业架构LNMP学习笔记15

客户端缓存: B/S架构里,Browser是浏览器,就是客户端。 客户端缓存告知浏览器获取服务段的信息是在某个区间时间段是有效的。 每次请求从服务器拿一遍数据,数据没有变化,影响带宽,影响时间。刷新又要去加载…

百度飞桨(武汉)人工智能产业赋能中心签约,推动AI技术与汉阳“1+6”产业深度融合

9月1日,“文心中国行”首站落地武汉汉阳。活动现场,武汉市汉阳区与百度正式签约,共同打造百度飞桨(武汉)人工智能产业赋能中心,助力武汉产业高质量跨越式发展。活动围绕“深入解读大模型产业实践&#xff0…

UWB学习——day1

UWB定义 UWB:Ultra Wideband(超宽频) UWB所谓的超宽频区别于其它近场通信技术可总结为时域上跳跃,频域上矮胖 从图中可以看出,时域上通过短且强的脉冲信号,频域上主要是超宽的频谱(Spectrum&a…

979. 在二叉树中分配硬币;1136. 并行课程;759. 员工空闲时间

979. 在二叉树中分配硬币 核心思想:递归。定义dfs(node),返回值为以当前节点为根节点的节点个数和硬币个数。 那么这棵树至少需要移入或者移出abs(coins-nodes)个硬币,也就是这么多步,然后累计它们的总和…

aarch64 arm64 部署 stable diffusion webui 笔记 【2】继续安装其他依赖 gfpgan

接上篇 aarch64 arm64 部署 stable diffusion webui 笔记 【1】准备 venv 安装pytorch 验证cuda_hkNaruto的博客-CSDN博客 编辑requirements_versions.txt,注释掉torch 启动webui.sh (venv) [rootceph3 stable-diffusion-webui]# useradd yeqiang useradd&#xf…

Pocket Yoga for mac:一个神奇的瑜伽助手,让你的身心更健康

Pocket Yoga for Mac(口袋瑜伽)是一款专为瑜伽爱好者设计的应用程序。无论您是初学者还是经验丰富的瑜伽修行者,这款应用都能帮助您在家中或办公室进行高效的瑜伽练习。 Pocket Yoga for Mac提供了一系列的瑜伽课程和练习,涵盖了不…

信息安全基础-技术体系-加密技术

系统安全 考点分析信息安全的基础知识(重点)信息安全系统的组成框架信息安全技术对称加密技术非对称加密对称密钥和非对称密钥对比 考点分析 一般不超纲 信息安全的基础知识(重点) 五个基本要素经常考察 机密性:加密报…

Python接口自动化测试框架介绍

之前在项目中搞了一套jmeter jenkins git ant接口自动化测试框架,在项目中运行了大半年了,效果还不错, 最近搞了一套requests unittest ddt pymysql BeautifulReport的接口自动化测试框架, 测试用例在yaml文件中&#xff0c…

Android后退堆栈

修改代码 现在的ItemClick使得用户单击其中一个项目时就会跳转,现在要修改其使得在一个小屏幕设备上才会这样做,在一个大屏幕设备上运行用户选择一个训练项目时在右边的片段显示响应的信息。 希望片段处理后退的方式:假设用户在手机上运行这…

游戏AI综述

1、游戏AI的特点 随着深度学习等技术的突破性进展,现代的人工智能技术进步神速,已经在自然语言处理、机器翻译和图像识别等众多方面取得了进步,而且已经影响到了现实生活。 如果把围棋也看作游戏,那么大名鼎鼎的AlphaGo系列人工…

使用SimpleITK批量计算医学图像分割的mask体积,病灶体积

使用SimpleITK计算如下所示的病灶标注的整体体积。 可以在该代码的基础上,增加写入excel表的操作,这样就可以把模型推理前的体积和模型推理后的体积都写入excel表,然后进行一系列分析。 1 计算方式 用SimpleITK包进行ROI/病灶体积的计算 im…

C高级day1

一、用cut截取出用户的家目录。要求:不能用“:”作为分割 二、XMind思维导图

el-table纵向垂直表头

参考&#xff1a;https://www.jianshu.com/p/1f38eaffd070 <el-tablestyle"width: 100%":data"getValues":show-header"false"border:cell-style"cellStyle" ><el-table-columnv-for"(item, index) in getHeaders"…

两种解法解决 LeetCode 27. 移除元素【C++】

移除元素 27. 移除元素题目&#xff1a;[移除元素](https://leetcode.cn/problems/remove-element/description/)示例和提示&#xff1a;解法&#xff1a;1. 暴力解法 2. 快慢指针 27. 移除元素 题目&#xff1a;移除元素 示例和提示&#xff1a; 解法&#xff1a; 1. 暴力解…

【C++】DICOM医学影像工作站PACS源码

PACS即影像存档与传输系统&#xff0c;是医学影像、数字化图像技术、计算机技术和网络通讯技术相结合的产物&#xff0c;是处理各种医学影像信息的采集、存储、报告、输出、管理、查询的计算机应用程序。 PACS是基于DICOM标准的医学影像管理系统&#xff0c;其模块覆盖了从影像…

Java:ArrayList源码解析

Java&#xff1a;ArrayList源码解析 导言 我们都知道ArrayList是一个可以实现自动扩容的List类&#xff0c;为了理解ArrayList是如何进行扩容的&#xff0c;我们就有必要对ArrayList的源码进行分析。本文中将着重研究源码中ArrayList是如何实现自动扩容的。 源码解析 ArrayL…

合宙Air724UG LuatOS-Air LVGL API控件-页面 (Page)

页面 (Page) 当控件内容过多&#xff0c;无法在屏幕内完整显示时&#xff0c;可让其在 页面 内显示。 示例代码 page lvgl.page_create(lvgl.scr_act(), nil) lvgl.obj_set_size(page, 150, 200) lvgl.obj_align(page, nil, lvgl.ALIGN_CENTER, 0, 0)label lvgl.label_crea…

netbeans+wamp+php配置调试代码

netbeans版本&#xff1a;8.1 wamp版本是2.5,里面的php5.5.12&#xff0c;apache2.4.9&#xff0c;mysql5.6.17。 wamp已经自带Xdebug&#xff08;PHP程序调试器&#xff09;。 步骤&#xff1a; 1.路径&#xff1a;D:\wamp\bin\apache\apache2.4.9\bin\php.ini 2.打开ne…

MyBatis 动态 SQL 实践教程

一、MyBatis动态 sql 是什么 动态 SQL 是 MyBatis 的强大特性之一。在 JDBC 或其它类似的框架中&#xff0c;开发人员通常需要手动拼接 SQL 语句。根据不同的条件拼接 SQL 语句是一件极其痛苦的工作。例如&#xff0c;拼接时要确保添加了必要的空格&#xff0c;还要注意去掉列…