JAVA IO流学习

File类:

File类是java.io包中很重要的一个类

File类的对象可以代表一个文件或者目录,可以修改文件大小、文件最后修改日期、文件名等

File对象不能操作文件的具体数据,即不能对文件进行读和写的操作

File的构造方法:

File(String pathname)  -------指定文件(目录)名和路径创建文件对象

File类的常用方法:

package file;import java.io.File;
import java.io.IOException;
import java.util.Date;public class FileDemo1 {public static void main(String[] args) throws IOException {/*一个File对象可以代表具体的文件或者目录 , 是对文件或者目录的抽象表示*/File f1=new File("D:\\java测试专用\\file测试用例");//指明详细的路径和文件名,注意用用双斜线或者反斜杠//指明详细的路径和目录名,注意用双斜线f1.createNewFile();//该名称文件不存在时,在该路径下创造出文件  原子地创建一个由该抽象路径名命名的新的空文件。System.out.println(f1.exists());//判断文件是否存在System.out.println(f1.canRead());//判断文件是否可以读取System.out.println(f1.canWrite());//判断文件是否可以写入System.out.println(f1.getParent());//返回此抽象路径的父级路径,如果不存在则返回NULLSystem.out.println(f1.getName());//获取路径名称System.out.println(f1.isDirectory());//测试此路径名是否为目录System.out.println(f1.isFile());//判断是否为普通文件System.out.println(f1.isHidden());//是否为隐藏文件System.out.println(f1.lastModified());//返回最后修改时间System.out.println(f1.getPath());//将此抽象路径名转换为路径名字符串。System.out.println(new Date(1679652353967L));System.out.println(f1.length());//返回此抽象路径名代表的文件的长度}
}

输入及输出的概念:

输入:把电脑硬盘中的东西读到程序中叫做输入(input)

输出:进行数据的read操作,将程序中的内容写出到外部设备中叫做输出(output),进行数据的write操作。

字节流与字符流:

从数据流编码格式上划分为字节流字符流

字节流常用类:

字节输入流:FileInputStream;

字节输出流:FileOutputStream

字符流常用类:

字符输入流:FileReader;

字符输出流:FileWriter

输入流与输出流:

流按照数据的传输方向分为输入流输出流

输入流:往程序中传输数据叫做输入流

输出流:从程序中往外写数据叫做输出流

● InputStream和OutputStream的子类都是字节流 可以读写二进制文 件,主要处理音频、图片、歌曲、字节流,处理单元 为1个字节。

● Reader和Writer的子类都是字符流 主要处理字符或字符串,字符流处理单元为1个字符。

字节流将读取到的字节数据,去指定的编码表中获取对应文字字符

输入输出节点字节流:

InputStream的基本方法:

close();       关闭流释放内存资源

read();读取一个字节并以整数的形式返回(0~255),如果返回-1说明已到输入流的末尾

read(byte[ ] b);读取一系列字节并存储到数组b中,返回读取到的字节数,如果读取前已到输入流的末尾。则返回-1

read(byte[ ] b,int off,int len);从索引off处开始读取len个字节并存储到数组b中,返回读取到的字节数,如果读取前已到输入流的末尾。则返回-1

OutputStream的基本方法:

close();关闭流释放内存资源

flush();刷新输出缓存区,直接将缓存区的数据输出而不必等到缓存区满,通常用在多线程的环境中,它可以确保当前缓存内容被输出,并立即释放内存

writre(int b);向输出流中写入一个字节数据,该字节数据为参数b的低八位

write(byte[ ] b);将一个数组写入到输出流中

write(byte[ ] b,off,len);将一个数组从索引off处开始len个字节写入到输出流中

节点流与处理流:

根据封装类型不同,流又被分为:

节点流、处理流

节点流:如果流封装的是某种特定的数据源,如文件、字符数组、字符串等,则称之为节点流

处理流:如果流封装的是其它对象,则称之为处理流。处理流提供了缓冲功能,提高了读写效率,同时增加了一些新的方法

节点流中常用类:

字节输入流:FileInputStream

字节输出流:FileOutputStream

字符输入流:FileReader

字符输出流:FileWrite

处理流中常用类:

缓冲字节输入流:BufferedInputStream

缓冲字节输出流:BufferedOutputStream

缓冲字符输入流:BufferedReader

缓冲字符输出流:BufferedWriter

输入输出节点字符流:

Reader的基本方法:

close();       关闭

read();读取一个字节并以整数的形式返回(0~255),如果返回-1说明已到输入流的末尾

read(char[ ] b);读取一系列字节并存储到数组b中,返回读取到的字节数,如果读取前已到输入流的末尾。则返回-1

read(char[ ] b,int off,int len);从索引off处开始读取len个字节数据并存储到数组b中,返回读取到的字节数,如果读取前已到输入流的末尾。则返回-1

Writer的基本方法:

close();关闭流释放内存资源

flush();刷新输出缓存区,直接将缓存区的数据输出而不必等到缓存区满,通常用在多线程的环境中,它可以确保当前缓存内容被输出,并立即释放内存

writre(int b);向输出流中写入一个字节数据,该字节数据为参数b的低八位

write(char[ ] b);将一个字符类型数组的数据写入到输出流中

write(char[ ] b,off,len);将一个字符类型数组从索引off处开始len个字节的字符写入到输出流中

对象输入输出流:

package chardemo;import java.io.*;
import java.util.Date;public class ObjectDemo {/*对象输入输出流: 把Java中的对象输出到文件中, 从文件把对象输入到程序中为什么要把对象输出到文件中?new Student(“张er”,20);数据存储在对象中,对象是在内存中存储,一旦程序运行结束,对象就会销毁有时需要将对象的信息长久保存,就需要将对象输出到文件中,长久保存。  举例系统升级   关闭服务器时将对象保存起来,升级完毕,重新再把数据还原回来把对象输出到文件的过程也称为对象的序列化,再把对象从文件输入到程序的过程称为对象的反序列化,反序列时会生成一个新的对象,所以反序列化也是创建对象的一种方式*/public static void main(String[] args) throws IOException, ClassNotFoundException {// String s=new String("fsde");//Date date=new Date();Student student=new Student(66,"zz");//对象输出   对象的序列化// FileOutputStream out=new FileOutputStream("D:\\demo.txt");//   ObjectOutput output=new ObjectOutputStream(out);//output.writeObject(s);//output.writeObject(date);/*  output.writeObject(student);output.flush();output.close();
*///对象输入   对象反序列化FileInputStream inputStream=new FileInputStream("D:\\demo.txt");ObjectInputStream objectInputStream=new ObjectInputStream(inputStream);//        String s=(String)objectInputStream.readObject();Date date=(Date) objectInputStream.readObject();//System.out.println(s);System.out.println(date);Student student1=(Student)objectInputStream.readObject();System.out.println(student1);objectInputStream.close();}}

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

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

相关文章

并查集学习(836. 合并集合 + 837. 连通块中点的数量)

//得先加集合个数再合并!!!!!!!!! 核心代码: int find(int x){//返回父节点if(x ! p[x]) {p[x] find(p[x]);//路径压缩 } //孩子不等于爸爸,就…

Pytorch转onnx

pytorch 转 onnx 模型需要函数 torch.onnx.export。 def export(model: Union[torch.nn.Module, torch.jit.ScriptModule, torch.jit.ScriptFunction],args: Union[Tuple[Any, ...], torch.Tensor],f: Union[str, io.BytesIO],export_params: bool True,verbose: bool False…

【QT+QGIS跨平台编译】056:【pdal_json_schema+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

点击查看专栏目录 文章目录 一、pdal_json_schema介绍二、pdal下载三、文件分析四、pro文件五、编译实践一、pdal_json_schema介绍 pdal_json_schema 是与 PDAL(Point Data Abstraction Library)相关的 JSON 模式文件。PDAL 是一个用于处理和分析点云数据的开源库。JSON 模式…

DHCP-PXE

Dynamic Host Configuration Protocol 动态主机配置协议 1.Selinux 调试为Permission 防火墙配置 搭建DHCP的主机必须有一个静态地址,提前配置好 安装DHCP软件 服务名为dhcpd DHCP地址分配四次会话, DISCOVERY发现 OFFER 提供 REQUEST 回应 A…

5G网络架构及技术(二):OFDM一

ToDo: 等把这些讲义看完后得单开一个文章整理思维导图   该部分由于内容比较重要,OFDM是5G物理层的基础,但学习时直接跳到5G OFDM去看它的那些参数设置感觉没什么意义,还得从发展的角度进行学习,先从最先用到OFDM的WiFi协议开始…

WCH恒沁单片机-CH32V307学习记录2----FreeRTOS移植

RISC-V 单片机 FreeRTOS 移植 前面用了 5 篇博客详细介绍了 FreeRTOS 在 ARM Cortex-M3 MCU 上是如何运行的。 FreeRTOS从代码层面进行原理分析系列 现在我直接用之前的 RISC-V MCU 开发板子(CH32V307VCT6)再次对 FreeRTOS 进行移植,其实也…

【C语言自定义类型之----结构体,联合体和枚举】

一.结构体 1.结构体类型的声明 srruct tag {nemer-list;//成员列表 }varible-list;//变量列表结构体在声明的时候,可以不完全声明。 例如:描述一个学生 struct stu {char name[20];//名字int age;//年龄char sex[20];//性别 };//分号不能省略2.结构体…

C语言实现快速排序算法

1. 什么是快速排序算法 快速排序的核心思想是通过分治法(Divide and Conquer)来实现排序。 算法的基本步骤是: 1. 选择一个基准值(通常是数组中的某个元素),将数组分成两部分,使得左边的部分所有元素都小于…

Open CASCADE学习|在给定的TopoDS_Shape中查找与特定顶点 V 对应的TopoDS_Edge编号

enum TopAbs_ShapeEnum{TopAbs_COMPOUND,TopAbs_COMPSOLID,TopAbs_SOLID,TopAbs_SHELL,TopAbs_FACE,TopAbs_WIRE,TopAbs_EDGE,TopAbs_VERTEX,TopAbs_SHAPE}; 这段代码定义了一个名为 TopAbs_ShapeEnum 的枚举类型,它包含了表示不同几何形状类型的常量。这些常量通常…

刷题之Leetcode283题(超级详细)

283.移动零 283. 移动零https://leetcode.cn/problems/move-zeroes/ 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nu…

【了解下Oracle】

🌈个人主页:程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…

golang 选择排序

学习笔记~ // Author sunwenbo // 2024/4/6 21:49 package mainimport "fmt"/* 选择排序基本介绍选择式排序也属于内部排序法,是从预排序的数据中按指定的规则选出某一元素,经过和其他元素重整,再依原则交换位置后达到…