Java(3) ----- File类、IO流、Stream流、基本软件结构
File类:
代表当前操作系统的文件对象。
File类:建用来操作操作系统的文件对象的,删除文件,获取文件信息,创建文件(文件夹)
广义来说操作系统认为文件包含(文件和文件夹)
File类创建文件路径:
相对路径:默认是直接相对到工程目录下寻找文件的;
分隔符:File:separator
getAbsolutePath() 绝对路径;
File类的判断功能的方法
exists() 是否存在;isFile() 是否为文件;
递归
方法在方法中调用了自己;
直接递归:自己的方法调用自己;
间接递归:自己的方法调用别人的方法,别的方法又调用了自己;
IO流:默认是数据覆盖管道
追加数据管道,第二参数是true就可以;
FileInputStream 会一个一个读取字节,读取英文和数字没问题,但是读中文会导致乱码;
使用字节数组读取内容,效率可以。无法避免中文乱码;
InputStream :::直接创建一个字节输入流管道和源文件路径接通;
如何实现读取可以避免乱码?
1、定义一个字节数组与文件的大小刚刚一样大,然后一桶水读取全部字节数据再输出; readAllBytes() 读取全部字节;
字节流不适合读取文本文件内容输出,读写文件内容建议使用字符流;
os.flush() 立即刷新数据到文件中去,刷新后,管道还能继续使用;
\r\n : 换行符,在大部分情况下通用;
Stream流的终结与非终结方法:
1、终结方法:一旦调用终结方法,流的操作全部终结,不能继续使用,只能创建新的Stream流操作;
2、非终结方法:每次调用完成以后返回一个新的流对象,可以继续使用,支持链式编程;
收集Stream流:把Stream流的数据转换为集合。
JDK释放资源的新方法
try with resources:```
复制文件夹(面试题)
基本软件结构
通信一定是基于软件结构实现的;
1.C/S结构 :全称为client/server结构,是指客户端和服务器结构。
常见程序有 QQ、迅雷,IDEA等软件。
2.B/S结构 :全称为Browser/server结构,是指浏览器和服务器结构。
常见浏览器有谷歌、火狐等、博学谷、京东、淘宝。
(开发中的重点,基于网页设计界面,界面效果可以更丰富:Java web开发)
两种架构各有优势,但是无论哪种架构,都离不开网络的支持。网络编程,就是在一定的协议下,实现两台计算机的通信的技术。
网络通信的三要素
1、协议:计算机网络客户端与服务端必须实现约定和彼此需要遵守的通信规则;
2、IP地址:互联网协议地址;
IPv4:4个字节,32位字符。
IPv4:6个字节,128位字符 ;
ipconfig:查看本机的IP
3、端口
标识唯一一个设备中的进程;
UDP
DatagramPacket:数据包对象,作用:用来封装要发送或者要接收的数据。比如:集装箱;
DatagramSocket:发送对象。作用:用来发送或者接收数据包,比如:码头;
TCP通信
使用场景:
(1)文件上传和下载
(2)邮件发送和接收
(3)远程登录
客户端的开发流程:
1、客户端要求请求于服务端的Socket管道连接。
2、从Socket通信管道中得到一个字节输出流
3、通过字节输出流给服务端写出数据;
服务端的开发流程:
1、注册端口;
2、接收客户端的Socket管道连接
3、从Socket通信管道得到一个字节输入流
4、从字节输入流中读取客户端发来的数据;
TCP服务端接受多个客户端;
N-N关系,一个客户端要一个线程;
解决方法:可以在服务端引入线程池,使用线程池来处理与客户端的消息通信;线程池不会引起过多的线程而导致系统死机!!!
HandlerSocketThreadPool(int maxPoolSize,int queueSize){
executer = }
优劣:
Y:不会引起系统的死机,可以控制并发线程的数量;
L:同时可以并发的线程将受到限制;
端口转发的思想证明:
端到端的通信,严格实现端口转发的操作;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构