java高级——IO流 File 字节流 字符流 管道流和节点流 打印流 内存流 对象序列化

1.10 I/O流 最全 最全 最全整理 Java的IO流是实现输入/输出的基础,它可以方便地实现数据的输入/输出操作,在Java中把不同的输入/输出源(键盘、文件、网络连接等)抽象表述为“流”(stream),通过流的方式允许Java程序使用相同的方式来访问不同的输入输出源。 阅读详情

File
获取文件或文件夹信息,该文件可以不存在
获取一个文件的最后修改时间,精确到时分秒:

File f=new File("D:\\jiu.txt");
Date d=new Date(f.lastModified());
DateFormat df=new SimpleDateFormat("yyyy年MM月dd日 HH小时mm分钟ss秒");
String format3 = df.format(d);
System.out.println(format3);

createNewFile() 创建文件 如果是多级目录,目录一定要先存在
mkdir() 创建目录,只能创建一级目录
mkdirs() 创建多级目录

FileSystemView获取桌面

FileSystemView fsv = FileSystemView.getFileSystemView();
		File[] roots = fsv.getRoots();
		for(int i=0;i<roots.length;i++)
		{
			System.out.println(fsv.getSystemDisplayName(roots[i]));
		}

listRoots获取系统根路径

File[] listRoots = File.listRoots();
		for(int i=0;i<listRoots.length;i++)
		{
			System.out.println(listRoots[i]);
		}

快捷键

CTRL+SHIFT+R 查找当前项目中的资源
CTRL+SHIFT+T 查看当前项目以及JRE+第三方的jar包下所有的资源
CTRL+SHIFT+F 格式化
CTRL+1 提供解决方案 告诉你下一步该怎么做
CTRL+T 查看类的族谱

字节流 Byte
输入流 InputStream 将硬盘的文件读到内存的进程中
输出流 outputStream 将内存中数据写入到硬盘的某个文件中

每一个汉字 都有对应的一个编码
GBK 常用汉字
GB2312 所有汉字 是GBK的扩充
UTF-8 万国码 默认的编码格式
不同的文字要用不同的编码去解析它

in.read方法,每一次从上次结束的位置开始读取,当读到末尾时
返回-1,如果读到末尾了还调用此方法,读到的还是上一次读到的数据
FileInputStream方法不支持重置操作。

OutputStream创建文件:

String txt="helloworld";
		OutputStream out=new FileOutputStream(new File("D:\\hello.txt"));
		out.write(txt.getBytes());

如果需要追加内容,有两种方法
方法1:
在后面加true

String txt="helloworld";
		OutputStream out=new FileOutputStream(new File("D:\\hello.txt"),true);
		out.write(txt.getBytes());

方法2:
追加多次

String txt="helloworld";
		OutputStream out=new FileOutputStream(new File("D:\\hello.txt"));
		out.write(txt.getBytes());
		out.write(txt.getBytes());
		out.write(txt.getBytes());

字节流
inputStream
outputStream
字符流
read
write
1.字节流和字节流之间的区别
A.字节流可以处理多媒体数据 但是字符流无法处理多媒体数据。
B.多媒体 图片 音频 视频 不要使用字符流
C.字符流的优势在于处理文字

2.close()和flush()的区别?

close()关闭流对象,但是先刷新一次缓冲区,关闭之后,流对象不可以继续再使用了。

flush()仅仅是刷新缓冲区(一般写字符时要用,因为字符是先进入的缓冲区),流对象还可以继续使用
对于字符流 一般写入的时候想要马上看到一般需要flush()
字符一定要flush,字节是不需要flush的

管道流和节点流
节点流 该流直接对应的是一个文件
InputStream
outputStream
Reader
Writer
管道流对应的是一个节点流 将节点流继续包装 包装之后 会多一些方法
BufferedReader readLine()
append("").append("")
newLine();
BufferedWriter write()
InputStreamReader 转换流 将字节流转换为字符流

InputStream in=new FileInputStream("D:\\tt.txt");
//		把字节流转换为字符流
	    InputStreamReader reader=new InputStreamReader(in);
//	            在BufferedReader中包装一个InputStreamReader
//	            就可以用管道流中的readLine()方法
	    BufferedReader bf=new BufferedReader(reader);
//	            读取一行
	    System.out.println(bf.readLine());;
//	            读取全部
	    String line=null;
	    while((line=bf.readLine())!=null)
	    {
	    	System.out.println(line);
	    }

OutputStreamWriter 转换 将字节流转换为字符流

打印流
printStream 字节打印流 即是节点流,又是管道流

//打印到控制台
PrintStream ps=new PrintStream(System.out);
ps.print("helloworld");
//输出到文件中
PrintStream ps2=new PrintStream(new File("D:\\ss.txt"));
ps2.println("世界真美丽");

格式化数据

ps2.println(MessageFormat.format("{0}是一个很{1}的人","张三","挫"));

printWirter 字符打印流

PrintWriter pw=new PrintWriter(System.out);
pw.println("世界你好");
pw.flush();

内存流
在内存中开辟一块空间 临时的空间 不常用
字节内存流 toByteArray()

//分配一块空间
String s="helloworld";
//读取空间里面的内容
ByteArrayInputStream in=new ByteArrayInputStream(s.getBytes());
int b=0;
while((b=in.read())!=-1)
{
	System.out.println(b);
}

//在创建输出流的时候 给你分配一个块 1024个字节
 ByteArrayOutputStream out=new ByteArrayOutputStream(1024);
    	String ss="111111";
    	out.write(ss.getBytes(),0,ss.length());
    	//将这个空间的数据全部拿出来
    	byte[] bb=out.toByteArray();
    	System.out.println(new String(bb));

字符内存流
一般用于servlet 自定义标签 toCharArray();

CharArrayWriter writer=new CharArrayWriter(1024);
		String s="222222";
		writer.write(s,0,s.length());
		char[] c = writer.toCharArray();
	    System.out.println(c);

总结:
把一个文件打印和读出:

Person p=new Person(1,"小红",'女');
		PrintStream ps=new PrintStream(new File("D:\\person.txt"));
	    ps.print(p);
	    BufferedReader reader=new BufferedReader(new FileReader(new File("D:\\person.txt")));
	    String readLine = reader.readLine();
	    System.out.println(readLine);

对象序列化
序列化流 对象想要在文件和网络中传输 必须实现序列化接口
将一个对象保存到文件中 前提是可以拿出来还是一样
ObjectInputStream类
要把对象的原始信息和图形保存到文件中 一定要实现序列化接口

Educoder | 计算机网络实验-IP协议分析 本关任务:使用 Ping 命令发送数据报,用 Wireshark 截获数据报,分析 IP 数据报的格式,理解 IPV4 地址的编址方法,加深对 IP 协议的理解。 阅读详情

相关推荐

Altera Cyclone4 EP4CE15F17C8核心板硬件设计避坑指南(附AD09工程文件)

本文深入解析Altera Cyclone4 EP4CE15F17C8核心板硬件设计中的关键问题与解决方案,涵盖电源架构优化、信号完整性处理、热设计及生产调试要点。特别提供经过验证的AD09工程文件,帮助开发者规避常见设计陷阱,提升FPGA项目的成功率与可靠性。

weixin_29159441的博客 297

java 节点流

java 流操作

liuqinhou的博客 607

报错:subprocess.CalledProcessError: Command ‘[‘where‘, ‘cl‘]‘ returned non-zero exit status 1.

右键此电脑--属性--高级系统设置--环境变量--系统变量--找到Path。Enterprise是企业版,如果你是社区版就找Community。2.安装的时候,c++桌面那个需要勾选。

2301_77554343的博客 1507

IO中节点流和处理流的理解学习

DataInputStream和DataOutputStream提供了可以存取与机器无关的Java原始类数据(如int,double等)的方法。DataInputStream和DataOutputStream是面向字节的,因此要使用InputStream和OutputStream。数据流中最小的数据单元是字符,Java中的字符是Unicode编码,一个字符占用两个字节。**介绍**使用对象流,可以将值和数据类型保存到文件中,在需要时可以将其完整取出。**介绍**主要用于文件中出现乱码的情况。......

爱学习的大雄的博客 608

ESD 防护深度解析:模型、等级、系统设计与防护策略

本文系统阐述了静电放电(ESD)防护的核心技术体系。首先对比分析了HBM(人体模型)和CDM(充电设备模型)两种基础ESD模型的物理特性、测试标准及分级要求,指出相同电压下CDM的破坏性是HBM的15-20倍。其次详细解析了IEC61000-4-2系统级ESD标准,包括接触/空气放电测试方法及判定等级。重点提出了系统级防护的三层架构:空间隔离(≥10mm间距)、电气隔离(地平面分割)和TVS管选型(响应时间<1ns),并对比了MOV、SCR等防护器件特性。针对不同应用场景(消费电子、工业控制等)给出了差异化

bother3000的博客 1884

Anaconda+Pycharm安装

我提前创建好一个自己项目所需的虚拟环境。步骤是:打开终端(cmd)或者 搜索 ”Anaconda Prompt“ 并打开,输入 conda create -n pytorch python=3.9 -c。

Wang_sweet的博客 3232

java 对象流、管道流、基本数据流、字节数组流

import java.io.*; class ObjectStreamDemo { public static void main(String[] args) throws IOException,ClassNotFoundException { writeObject(); readObject(); } public static void writeObject(

白夜行 719

(35)远程识别(又称无人机识别)(一)

Ardupilot官网关于《Peripheral Hardware》的翻译 —《(35) 远程识别(又称无人机识别)》。

无人机开发(开源Ardupilot) 4万+

JavaIO流_中(IO原理、流的分类(节点流、缓冲流、转换流、输入输出流、对象流、打印流))

IO流原理及流的分类 IO原理 I/O是Input/Output的缩写, I/O技术是非常实用的技术,用于处理设备之间的数据传输。如读/写文件,网络通讯等。 Java程序中,对于数据的输入/输出操作以“流(stream)” 的方式进行。 java.io包下提供了各种“流”类和接口,用以获取不同种类的数据,并通过标准的方法输入或输出数据。 输入input**:**读取外部数据(磁盘...

斗鹰的技术专栏 1771

从零开始:使用Mask2Former训练你的专属图像分割数据集

本文详细介绍了如何使用Mask2Former训练自定义图像分割数据集,从环境配置、数据集准备到模型训练与优化。通过实战技巧和问题排查指南,帮助开发者高效完成从零开始的图像分割任务,特别适合需要处理自定义数据集的AI研究人员和工程师。

weixin_30566063的博客 644

提交 ieee 手稿出现:Do not include the Reviewer PDF with my submission 怎么办

IEEE投稿Reviewer PDF选项说明 投稿时出现的"Do not include the Reviewer PDF with my submission"选项控制是否附带评审专用PDF文件。Reviewer PDF是系统自动生成包含所有投稿材料的完整PDF,用于同行评审。建议保持默认不勾选状态,除非确认编辑部不需要该文件,否则可能影响审稿流程。勾选表示不附带此PDF,不勾选则会正常生成并提交该评审文件。

ZhangJiqun&191cm&85kg 2208

java系统讲解_java中的io系统详解

Java 流在处理上分为字符流和字节流。字符流处理的单元为 2 个字节的 Unicode 字符,分别操作字符、字符数组或字符串,而字节流处理单元为 1 个字节,操作字节和字节数组。Java 内用 Unicode 编码存储字符,字符流处理类负责将外部的其他编码的字符流和 java 内 Unicode 字符流之间的转换。而类 InputStreamReader 和 OutputStreamWriter...

weixin_42366532的博客 351

Hermes Agent 对阵 OpenClaw:自我改进的 AI 队友

但在 2026 年 2 月,Nous Research 发布了 Hermes Agent,它带来了不同的愿景:一个不仅能够运行,还能学习的代理。在完成复杂的多步骤任务后,它会分析自己的操作并创建一个可复用的技能。对于已在使用 OpenClaw 的澳大利亚企业而言,这意味着您可以试用 Hermes Agent,而无需丢失数月的配置和自定义成果。最重要的区别在于理念:OpenClaw 是一个需要配置的工具,而 Hermes Agent 则是一个会学习的队友。OpenClaw 的技能是静态的。

xiaoshun007的专栏 1571

JavaSE_day19 IO流、File类、字节流、字符流、文件流、缓冲流、转换流、数据流、对象流、打印流、Scanner与System与IO流

* File类 * 字节流 * 字符流 * 文件流 * 缓冲流 * 转换流 * 数据流 * 对象流 * 打印流 * Scanner与System与IO流

weixin_44890576的博客 3020

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

第14章 Java之File类与IO流

第14章 File类与IO流

xqmids99的博客 1162

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Java IO详解

作者:一面千人来源:cnblogs.com/EvswardJava I/O流是一组有顺序的,有起点和终点的字节集合。是对设备文件间数据传输的总称和抽象。在IO中涉及的设备文件包括文件、控制台、网络链接等,这其中又根据流的方向可以将两端的设备文件分为数据源对象和接收端对象数据源对象:有能力产出数据接收端对象:有能力接收数据而IO流实际上屏蔽了在实际设备中的处理数据的细节,这...

6722

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

【Java基础教程】特别篇:IO流合辑——这波知识归纳很细!肝了三万字,全面探索Java I\O流操作体系~

Java的IO流(Input/Output streams)用于处理输入和输出操作。它们提供了一种与外部设备(如文件、网络连接等)进行交互的方法。Java的IO流按照数据的流向分为输入流(InputStream)和输出流(OutputStream)。输入流用于从外部设备读取数据到程序中,输出流用于将程序中的数据写入外部设备。Java的IO流拥有通用性、支持多种类型的数据、灵活性和可扩展性等优点,因而可被用于文件操作、网络编程、数据库操作以及 性能分析与日志记录等场景。

Technology changes the world of life 1017

Java基础复习08:File类、字节流、字符流、缓冲流、转换流、序列化、打印流、Commons-io包介绍

Java基础复习08:IO流(File类与IO流概述、字节输入输出流、字符输入输出流、缓冲流、字符转换流、对象序列化、打印流、Commons-io包介绍)

qq_57030936的博客 427

IO流详解

负责从磁盘或网络上将数据读到内存中去O指Output,称为输出流,负责写数据出去到网络或磁盘上因此,IO流总体来看就有四大流字节输入流:以内存为基准,在管道中,以一个一个字节的形式,从外部读取数据到内存中的流。字节输出流:以内存为基准,在管道中,以一个一个字节的形式,将数据从内存中读取到外部磁盘或网络中的流。字符输入流:以内存为基准,在管道中,以一个一个字符的形式,从外部读取数据到内存中,只适合操作纯文本文件的流。

m0_73856804的博客 1659

Java程序设计——IO流

一、概念 大多数应用程序都需要实现与设备之间的数据传输,例如,键盘可以输入数据,显示器可以显示程序的运行结果等 在Java中,将这种通过不同输入/输出设备(键盘,内存,显示器,网络等)之间的数据传输抽象表述为“流”,程序允许通过流的方式与输入/输出设备进行数据传输 Java中的“流”都位于java.io包中,称为IO(输入/输出)流 IO流有很多种,按照操作数据的不同,可以分为字节流和字符流,按照数据传输方向的不同又可分为输入流和输出流,程序从输入流中读取数据,向输出流中写入数据。

Mr_John 1798

IO流学习笔记

对于学习IO流的小结,学习记录。

ddfhfjd的博客 820

第十四章、文件(File类)与IO流

文件(File)与IO 目录 文章目录文件(File)与IO目录主要内容学习目标第十四章 File类与IO流14.1 java.io.File类14.1.1 概述14.1.2 构造方法14.1.3 常用方法1、获取文件和目录基本信息的方法2、各种路径问题3、判断功能的方法4、创建删除功能的方法5、创建和删除临时文件6、重命名功能的方法7、目录的遍历14.1.4 递归实现多级目录操作1、递归打印多级...

爱码者的博客 2092

小白看了就会用IO流的文章

首先我们先了解一下什么是流:流就是字节序列的抽象概念,能被连续读取数据的数据源和能被连续写入数据的接收端就是流。如下图: 而流的作用:能让大家自由地控制文件、内存、IO设备等数据的流向,而IO流就是用于处理设备上的数据,如硬盘、内存、键盘录入等,就好像管道,将两个容器连接起来。 IO流有很多种,按操作数据单位不同可分为字节流(8 bit)和字符流(16 bit),按数据流的流向不同分为输入流和输...

一个爱运动的程序员的博客 2211

JAVA IO流学习小结

要io首先得有文件,所以先介绍java中的文件类File。File是java.io包下的类,File类的对象抽象代表当前操作系统的文件或者文件夹。创建File对象时,文件路径中的分隔符使用斜线“/”或双反斜线“\\”或者使用“File.separator”作为分隔符。

bettername的博客 724

IO流:字节流、字符流、缓冲流、Properties实现流操作和随机数的生成(JAVA基础十一)

讲解IO流:字节流、字符流和缓冲流;文件File类和FileFiter过滤器;Properties文件流的实现;随机数的三种生成方式及其原理。

Java.L的博客 270

JavaSE-IO流总结

1. File 文件和目录是可以通过File封装成对象的 对于File而言,其封装的并不是一个真正存在的文件,仅仅是一个路径名而已。它可以是存在的,也可以是不存在的。将来是要通过具体的操作把这个路径的内容转换为具体存在的 File常用方法: win系统的路径分隔符\要用转义为\\ 常用字段: // 路径结束的标志 static String pathSeparator // 目录与目录之间的分隔符 static String separator 常用构造: // 通过将给定的路径名字符串转.

三省的博客 383
上一篇: java售票小程序
下一篇: java BufferedImage(图片内存缓冲区)——批量加水印
一JJL
博客等级 码龄8年 48粉丝 121原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值