纯html网站浦东新区网站建设

张小明 2026/1/1 14:20:19
纯html网站,浦东新区网站建设,seo搜索引擎,附近找室内装修公司作为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进行投诉反馈,一经查实,立即删除!

淘宝导购网站模版湖北营销型网站建设价格

云服务对话框与状态机配置全解析 1. 服务对话框元素类型 服务对话框除了常见的文本框元素外,还有多种其他类型可供使用。随着 CloudForms 版本的更新,服务对话框元素增添了许多实用的新特性。 - 动态元素 :在 CloudForms 3.2 之前,仅有动态下拉列表能够实现动态(运行…

张小明 2025/12/31 15:47:50 网站建设

包装技术支持 东莞网站建设重庆做营销型网站建设公司

开源界的ChatGPT平替?LobeChat真实使用感受分享 在大模型应用遍地开花的今天,越来越多开发者不再满足于调用OpenAI的API做简单问答。我们更想要一个能真正掌控、可定制、够安全的“私人AI助手”——既能连自家部署的LLaMA 3,又能接入通义千问…

张小明 2025/12/29 8:54:11 网站建设

制作线下交易平台网站建设企业网站建设中在方案设计上

百度网盘直链解析终极指南:告别龟速下载的完美方案 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 还在为百度网盘的下载速度而烦恼吗?每天面对几十KB的…

张小明 2025/12/29 16:55:58 网站建设

产品设计私单网站错误标签 wordpress

🎓 作者:计算机毕设小月哥 | 软件开发专家 🖥️ 简介:8年计算机软件程序开发经验。精通Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等技术栈。 🛠️ 专业服务 🛠️ 需求定制化开发源码提…

张小明 2025/12/31 16:39:38 网站建设

新郑做网站优化建网站如何添加会员模式

PaddlePaddle注意力机制实现:从原理到实战 在当今的深度学习实践中,我们早已不再满足于让模型“看见”或“读取”数据——真正关键的是让它学会“关注”。这种能力的核心,正是注意力机制(Attention Mechanism)。它不仅…

张小明 2025/12/29 10:56:26 网站建设

苏州知名高端网站建设企业网站开发电脑设置

Apache 服务器安全配置与管理指南 1. 安全基础 网站访客的访问权限与运行服务器进程的用户 ID 类似,该用户 ID 应具有有限的权限。当配置正确时,此用户 ID 在机器上的操作范围较窄,保障系统安全就意味着限制该用户 ID 的访问范围。 需要注意的是,虽然非 root 用户也能启动…

张小明 2025/12/31 15:41:21 网站建设