JAVA笔记十七

十七、File-IO流

1.I/O的概念和java.io包

(1)输入:外部源—>程序

  输出:程序—>输出目标

  外部源、输出目标:磁盘文件、网络连接、内存缓存等

(2)java程序通过流执行I/O

流是一种抽象,可以用来产生信息或者使用信息,可以通过java的I/O系统链接到物理设备

2.File类

可以表示一个文件,也可以表示一个路径/目录

(1)创建File对象

File对象描述了文件/目录本身的属性,用于获取和操作与磁盘文件/目录关联的信息

构造方法:

·File(String directoryPath)

·File(String directoryPath,String filename)

·File(File dirObj,String filename)

·File(URI uriObj)

(2)File类的常用方法

·boolean exists():File对象所表示的文件或目录是否存在

·String getName():获取文件名或文件夹名

·String getPath():将路径转换为字符串,并返回

·String getAbsolutePath():返回抽象路径名的绝对路径名字符串

·boolean isFile():判断File对象所表示的是否是一个标准文件

·boolean isDirectory():判断File对象所表示的是否是一个目录

·boolean createNewFile():创建新文件,如果目录不存在则异常

·boolean mkdir():只能创建一层目录

·boolean mkdirs():可以创建多层目录

·boolean delete():删除文件或文件夹

3.流

(1)流的分类

流的方向:

·输入流

·输出流

处理数据单位的方式:

·字节流(8位)

·字符流(16位)

功能:

·节点流:从一个特定的数据源(节点)读写数据的流

·处理流:通过对数据的处理位程序提供更为强大的读写功能

(2)IO流结构图

红色边框的流为常用的流

4.字节流

字节输入流InputStream主要方法

(1)read()

从此输入流中读取一个数据字节

(2)read(byte[] b)

从此输入流中将最多b.length个字节的数据读入一个byte数组中

(3)read(byte[] b, int off, int len)

从此输入流中将最多len个字节的数据读入一个byte数组中

(4)close()

关闭此输入流并释放与该流关联的所有系统资源

字节输出流OutputStream主要方法

(1)write(byte[] b)

将b.length个字节从指定byte数组写入此文件输出流中

(2)write(byte[] b, int off, int len)

将指定byte数组中从偏移量off开始的len个字节写入此文件输出流

(3)write(int b)

将指定字节写入此文件输出流

(4)close()

关闭此输入流并释放与该流关联的所有系统资源

5.字符流

字符输入流Reader主要方法

(1)read()

读取单个字符

(2)read(char[] cbuf)

将字符读入数组

(3)read(char[] cbuf, int off, int len)

将字符读入数组的某一部分

(4)read(CharBuffer target)

试图将字符读入指定的字符缓冲区

(5)flush()

刷新该流的缓冲

(6)close()

关闭此流,但要先刷新它

字符输出流Writer主要方法

(1)write(char[] cbuf)

写入字符数组

(2)write(char[] cbuf, int off, int len)

写入字符数组的某一部分

(3)write(int c)

写入单个字符

(4)write(String str)

写入字符串

(5)write(String str, int off, int len)

写入字符串的某一部分

flush() :刷新该流的缓冲。

close() :关闭此流,但要先刷新它

6.转换流

(1)InputStreamReader

字节输入流转换成字符输入流

FileInputStream fileInputStream=new FileInputStream(file);

Reader reader=new InputStreamReader(fileInputStream,UTF-8)  字节编码

InputStreamReader继承了Reader

(2)OutputStreamReader

字节输出流转换成字符输出流

FileOutputStream fileOutputStream=new FileOutputStream(file);

Writer writer=new OutputStreamWriter(fileOutputStream);

OutputStreamWriter继承了Writer

7.缓冲流

(1)字节缓冲流

BufferedInputStream、BufferedOutputStream

(2)字符缓冲流

BufferedWriter、BufferedReader

8.打印流

PrintWriter

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

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

相关文章

jenkins自动化持续集成

一、持续集成优势 1.1 解放重复劳动 一次设置,多次复用。持续集成任务可以解放集成、测试、部署等重复性劳动,通过自动化任务能够显著提升集成频率。 1.2 更快解决问题 接入持续集成任务后,能够更早地感知变更后效果,及时进入…

【OpenCV C++20 学习笔记】基本图像容器——Mat

【OpenCV C20 学习笔记】基本图像容器——Mat 概述Mat内部结构引用计数机制颜色数据格式 显式创建Mat对象使用cv::Mat::Mat构造函数矩阵的数据项 使用数组进行初始化的构造函数cv::Mat::create函数MATLAB风格的初始化小型矩阵通过复制创建Mat对象 Mat对象的输出其他普通数据项的…

在图神经网络(GNN)上进行关系推理的新架构

开发能够学习推理的模型是一个众所周知的具有挑战性的问题,在这个领域中,使用图神经网络(GNNs)似乎是一个自然的选择。然而,以往关于使用GNNs进行推理的工作表明,当这些模型面对需要比训练时更长推理链的测…

某数据泄露防护(DLP)系统NoticeAjax接口SQL注入漏洞复现 [附POC]

文章目录 某数据泄露防护(DLP)系统NoticeAjax接口SQL注入漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现某数据泄露防护(DLP)系统NoticeAjax接口SQL注入漏洞复现 [附POC] 0x01 前言 免责声明:请勿利用文章内…

SpringBoot 项目配置文件注释乱码的问题解决方案

一、问题描述 在项目的配置文件中,我们写了一些注释,如下所示: 但是再次打开注释会变成乱码,如下所示: 那么如何解决呢? 二、解决方案 1. 点击” File→Setting" 2. 搜索“File Encodings”, 将框…

DDoS 究竟在攻击什么?

分布式拒绝服务(DDoS)攻击是一种常见的网络攻击形式,攻击者通过向目标服务端发送大量的请求,使目标服务端无法进行网络连接,无法正常提供服务。 DDoS 攻击通常是由大量的分布在全球各地的 “僵尸” 计算机&#xff08…

力扣高频SQL 50题(基础版)第七题

文章目录 力扣高频SQL 50题(基础版)第七题1068. 产品销售分析 I题目说明思路分析实现过程准备数据:实现方式:结果截图:总结: 力扣高频SQL 50题(基础版)第七题 1068. 产品销售分析 I 题目说明 …

Android adb shell ps进程查找以及kill

Android adb shell ps进程查找以及kill 列出当前Android手机上运行的所有进程信息如PID等: adb shell ps 但是这样会列出一大堆进程信息,不便于定向查阅,可以使用关键词查找: adb shell "ps | grep 关键词" 关键词查…

Mysql中如何实现两列的值互换?给你提供些思路。

文章目录 Mysql中如何实现两列的值互换1、第一感觉此sql应该能处理问题了2、需要一个地方存要替换的值,不然两列搞不定。2.1 加第三列?(能解决,但是看起来呆呆)2.2 上临时表(搞点弯路走走) 示例…

Linux学习第55天:Linux 4G 通信实验(更快、更高、更强)

Linux版本号4.1.15 芯片I.MX6ULL 大叔学Linux 品人间百味 思文短情长 无论是有线网络还是WiFi都是摆脱不了布线的尴尬,而4G通信可以彻底拜托网线的束缚,实现无线网络通信。 而说到4G就不得不提到5G,中…

jenkins删除历史构建记录

1、 登录jenkins,进入【Manage Jenkins】-【Script Console】,输入: def jobName "Test" //删除的项目名称 def maxNumber 60 // 保留的最小编号,意味着小于该编号的构建都将被删除 Jenkins.instance.getItemByFullN…

单元测试--Junit

Junit是Java的单元测试框架提供了一些注解方便我们进行单元测试 1. 常用注解 常用注解&#xff1a; TestBeforeAll&#xff0c;AfterAllBeforeEach&#xff0c;AfterEach 使用这些注解需要先引入依赖&#xff1a; <dependency><groupId>org.junit.jupiter<…

Vue3与Element-plus配合 直接修改表格中的一项数据——控制输入框的显示与隐藏

利用控制与隐藏输入框,直接修改表格中的每一项数据。 <!-- 表格模块 --> <div><el-table :data"tablelist" style"width: 100%"><el-table-column align"center" prop"deposit" label"接单押金">&l…

【 C++ 】 一文搞定——引用、内联、命名空间、缺省、重载

前言&#xff1a;这篇文章将带您了解C基础中的知识点——命名空间、引用、内联、缺省、重载 &#x1f618;我的主页&#xff1a;OMGmyhair-CSDN博客 一、命名空间namespace 1.可以嵌套定义&#xff0c;但是只能定义在全局 namespace ly {int student 1;int age 21;void Pr…

windows wsl ubuntu系统安装桌面可视化

参考&#xff1a; https://www.bilibili.com/read/cv33557374/ 1&#xff09;首先先安装好wsl ubuntu系统 2&#xff09;安装 Ubuntu 桌面版 sudo apt purge -y acpid acpi-support modemmanagersudo apt-mark hold acpid acpi-support modemmanager sudo apt install ubunt…

数据库连接断开后,DBAPI的数据源如何自动重连

现象 在使用DBAPI的过程中&#xff0c;如果网络抖动导致数据库连接不上&#xff0c;发现DBAPI的数据源不能重连&#xff0c;必须重启DBAPI才能连上数据库 解决办法 在数据源的连接池参数配置druid.breakAfterAcquireFailurefalse注意在企业版的4.1.1及以上版本才可以配置连接…

捉虫笔记(1)之 WinDbg符号配置

WinDbg符号配置 1、WinDbg简单介绍 WinDbg 是微软的一款强大的调试工具&#xff0c;用于 Windows 平台的内核和用户模式调试。它提供了一系列强大的功能&#xff0c;包括内存和寄存器的查看、断点设置、堆栈跟踪、性能分析等。 WinDbg 的历史可以追溯到微软早期的调试工具&a…

OceanBase v4.2 特性解析:如何实现表级恢复

背景 在某些情况下&#xff0c;你可能会因为误操作而遇到表数据损坏或误删表的情况。为了能在事后将表数据恢复到某个特定时间点&#xff0c;在OceanBase尚未有表级恢复功能之前&#xff0c;你需要进行以下步骤&#xff1a; 利用OceanBase提供的物理恢复工具&#xff0c;您可…

ESP8266用AT指令实现连接MQTT

1准备工作 硬件&#xff08;ESP8266&#xff09;连接电脑 硬件已经烧入了MQTT透传固件 2实现连接 2-1&#xff08;进入AT模式&#xff09; 打开串口助手发送如下指令 AT 2-2&#xff08;复位&#xff09; ATRST 2-3&#xff08;开启DHCP&#xff0c;自动获取IP&#x…

Java二十三种设计模式-代理模式模式(8/23)

代理模式&#xff1a;为对象访问提供灵活的控制 引言 代理模式&#xff08;Proxy Pattern&#xff09;是一种结构型设计模式&#xff0c;它为其他对象提供一个代替或占位符&#xff0c;以控制对它的访问。 基础知识&#xff0c;java设计模式总体来说设计模式分为三大类&#…