全广告网站wordpress官方主题推荐

张小明 2025/12/30 13:01:13
全广告网站,wordpress官方主题推荐,html网站建设基本流程图,太原网络推广网站作为Java程序员#xff0c;不管是读写文件、处理网络数据#xff0c;还是操作控制台输入输出#xff0c;IO 都是绕不开的坎。刚学的时候#xff0c;看着 InputStream、OutputStream、Reader、Writer 一堆类#xff0c;属实有点头大。今天就用大白话#xff0c;把Java IO的…作为Java程序员不管是读写文件、处理网络数据还是操作控制台输入输出IO 都是绕不开的坎。刚学的时候看着 InputStream、OutputStream、Reader、Writer 一堆类属实有点头大。今天就用大白话把Java IO的核心知识点捋清楚新手也能轻松看懂一、先搞懂Java IO到底是啥IO全称 Input/Output翻译过来就是输入和输出。说白了就是程序和外部设备之间的数据传输。比如你用Java程序读取本地的txt文件这就是输入Input —— 数据从文件进到程序里你把程序里的用户信息写入到数据库或者保存成一个新文件这就是输出Output —— 数据从程序跑到外部存储里。Java把这些IO操作都封装在了 java.io 包下后来又出了 java.nio NIO是Non-blocking IO非阻塞IO今天先聊传统IO。核心思路就是用流的方式处理数据这“流”就像水管数据就是水管里的水顺着水管就能从一端流到另一端。二、核心分类字节流 vs 字符流Java IO最核心的划分就是字节流和字符流。这俩的区别直接决定了你该用哪个类干活。2.1 字节流处理一切数据的“万能选手”字节流的操作单位是 字节byte1个字节等于8位。不管是文本文件、图片、音频、视频本质上都是字节组成的所以字节流能处理任何类型的数据。字节流的顶级父类是两个抽象类- InputStream所有字节输入流的爹负责读数据- OutputStream所有字节输出流的爹负责写数据我们常用的是它们的子类比如操作文件的 FileInputStream 和 FileOutputStream。举个简单的例子用字节流复制一张图片javaimport java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;public class ByteStreamDemo {public static void main(String[] args) {// 源文件路径和目标文件路径String srcPath D:/test.jpg;String destPath D:/test_copy.jpg;// 声明流对象FileInputStream fis null;FileOutputStream fos null;try {// 创建流对象fis new FileInputStream(srcPath);fos new FileOutputStream(destPath);// 定义缓冲区每次读1024字节提高效率byte[] buffer new byte[1024];int len; // 记录每次实际读取的字节数// 循环读取读到末尾时fis.read()会返回-1while ((len fis.read(buffer)) ! -1) {// 把读到的字节写入目标文件fos.write(buffer, 0, len);}System.out.println(图片复制成功);} catch (IOException e) {e.printStackTrace();} finally {// 关闭流释放资源顺序是先开后关try {if (fos ! null) fos.close();if (fis ! null) fis.close();} catch (IOException e) {e.printStackTrace();}}}}这里要注意两个点一是一定要用 finally 关闭流不然会浪费系统资源二是用字节数组当缓冲区比一次读一个字节快太多了2.2 字符流处理文本的“专业选手”字符流的操作单位是 字符char它是为了处理文本数据而生的。因为不同的编码格式比如UTF-8、GBK一个字符对应的字节数不一样字符流会帮我们自动处理编码问题避免出现乱码。字符流的顶级父类也是两个抽象类- Reader所有字符输入流的爹负责读文本- Writer所有字符输出流的爹负责写文本常用子类比如 FileReader 和 FileWriter直接用来读写文本文件超方便。同样举个例子用字符流读取txt文件内容javaimport java.io.FileReader;import java.io.IOException;public class CharStreamDemo {public static void main(String[] args) {String filePath D:/test.txt;FileReader fr null;try {fr new FileReader(filePath);char[] buffer new char[1024];int len;while ((len fr.read(buffer)) ! -1) {// 把字符数组转成字符串输出System.out.print(new String(buffer, 0, len));}} catch (IOException e) {e.printStackTrace();} finally {try {if (fr ! null) fr.close();} catch (IOException e) {e.printStackTrace();}}}}这里要注意字符流不能处理图片、音频等二进制文件强行用的话文件会损坏三、进阶技巧缓冲流让IO速度飞起来刚才的例子里我们自己定义了字节数组/字符数组当缓冲区但Java其实给我们提供了更方便的缓冲流它的底层就是自带了缓冲区能大大减少磁盘的读写次数提升效率。缓冲流分为字节缓冲流和字符缓冲流- 字节缓冲流 BufferedInputStream 、 BufferedOutputStream- 字符缓冲流 BufferedReader 、 BufferedWriter尤其是字符缓冲流还提供了 readLine() 按行读和 newLine() 换行方法处理文本简直不要太爽举个字符缓冲流的例子按行读取文本并写入新文件javaimport java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;public class BufferedStreamDemo {public static void main(String[] args) {String srcPath D:/source.txt;String destPath D:/dest.txt;BufferedReader br null;BufferedWriter bw null;try {br new BufferedReader(new FileReader(srcPath));bw new BufferedWriter(new FileWriter(destPath));String line;// 按行读取读到末尾返回nullwhile ((line br.readLine()) ! null) {bw.write(line);bw.newLine(); // 写入换行符不然所有内容会挤在一行}System.out.println(文本复制完成);} catch (IOException e) {e.printStackTrace();} finally {try {if (bw ! null) bw.close();if (br ! null) br.close();} catch (IOException e) {e.printStackTrace();}}}}四、必踩的坑这些注意事项要记牢1. 流一定要关闭不管是手动关还是用try-with-resources语法JDK7及以上支持不关闭流会导致资源泄漏。try-with-resources会自动关闭流推荐使用java// try-with-resources语法流对象写在try的括号里try (FileInputStream fis new FileInputStream(test.jpg);FileOutputStream fos new FileOutputStream(test_copy.jpg)) {// 读写操作} catch (IOException e) {e.printStackTrace();}2. 区分绝对路径和相对路径绝对路径是从盘符开始的完整路径比如D:/test.txt相对路径是相对于项目根目录的路径比如src/test.txt别搞混了导致文件找不到。3. 处理编码问题如果用字符流读写出现乱码可以指定编码格式比如用 InputStreamReader 包装字节流javaBufferedReader br new BufferedReader(new InputStreamReader(new FileInputStream(test.txt), UTF-8));4. 字节流和字符流别混用比如用FileOutputStream写文本再用FileReader读很容易出现乱码。五、总结Java IO其实没那么复杂记住核心逻辑就行- 按数据类型分字节流处理一切数据字符流专门处理文本- 按功能分节点流直接操作文件/设备比如FileInputStream和处理流包装节点流比如BufferedInputStream提升性能- 关键操作打开流→读写数据→关闭流掌握这些基础再去学NIO、NIO2就会轻松很多。希望这篇文章能帮到正在啃Java IO的小伙伴们祝大家编程愉快
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

长沙公司网站费用网站建设基本模板介绍

在AI图像生成领域,精准控制始终是开发者面临的核心挑战。ComfyUI ControlNet预处理器通过深度感知、姿态估计、线稿提取等核心技术,为图像生成提供了前所未有的结构化控制能力。本文将深入解析预处理器的实际应用场景,并提供完整的性能优化解…

张小明 2025/12/28 7:47:47 网站建设

新开传奇网站发布站天津河北区做网站

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个交互式strlen学习工具,包含:1) 字符串内存布局可视化 2) 单步执行演示 3) 常见错误模拟 4) 自动练习题生成。界面友好,支持中英文双语&a…

张小明 2025/12/28 7:47:13 网站建设

浙江省邮电工程建设有限公司网站wordpress支持pdo

LangFlow专利申请进展通报 在大语言模型(LLM)加速落地的今天,如何让复杂的AI系统变得“可触摸”、可协作,已成为工程化推进中的关键瓶颈。尽管LangChain等框架极大拓展了LLM的能力边界,但其代码优先的设计模式仍天然地…

张小明 2025/12/28 7:46:40 网站建设

上海百度首页优化长春关键词seo价格

打通文档智能检索最后一公里:anything-llm RAG引擎揭秘 在企业知识库越积越厚、员工每天却仍在反复问“报销标准是多少”的今天,我们不得不面对一个现实:信息不是不存在,而是“找不到”。传统的关键词搜索面对模糊提问束手无策&am…

张小明 2025/12/28 7:46:05 网站建设

计算机网站开发与应用网站策划方案 优帮云

C#实现人脸增强:基于GFPGAN的Facefusion第五步 在AI视觉应用日益普及的今天,换脸技术早已不再局限于影视特效或娱乐恶搞。从虚拟主播到数字人生成,再到个性化内容创作,高质量的人脸处理流水线正成为许多产品的核心支撑。其中&…

张小明 2025/12/28 7:45:33 网站建设

在线室内设计网站世界新闻最新消息

电商客服知识库搭建:基于 Anything-LLM 的落地实践 在电商平台日均咨询量动辄数千条的今天,一个常见的场景是:用户反复询问“退货要多久?”、“优惠券怎么用?”,而客服团队却疲于复制粘贴标准回复。更棘手的…

张小明 2025/12/28 7:44:59 网站建设