免费建微网站平台php网站开发结构说明

张小明 2026/1/9 17:23:02
免费建微网站平台,php网站开发结构说明,广东网站备案查询,沈阳公路建设工程信息网作为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进行投诉反馈,一经查实,立即删除!

做网站代理工作安全吗网上进货渠道有哪些平台

第一章:为什么你的Mac跑不了Open-AutoGLM?深度解析M芯片适配难题许多开发者在尝试于搭载M系列芯片的Mac上运行开源项目Open-AutoGLM时,遇到了无法启动或性能异常的问题。其核心原因在于该项目依赖的底层推理引擎尚未完全适配Apple Silicon架构…

张小明 2026/1/8 8:42:40 网站建设

建网站挣钱海南的网站建设公司

ComfyUI节点自动化部署:从手动配置到智能安装的革命性转变 【免费下载链接】ComfyUI-Manager 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-Manager 在ComfyUI生态系统中,节点扩展的安装过程曾是一个技术门槛较高的操作环节。传统的手动…

张小明 2026/1/9 13:32:12 网站建设

河南网站建设的公司建设银行的网站首页

随着软件开发全面进入AI驱动时代,一个得力的AI编程助手已成为开发者突破效率瓶颈、聚焦核心创新的关键。面对市场上琳琅满目的选择,如何找到最适合自己的那一个?本文基于产品能力、技术特色和场景适配度,为您深度评测并强烈推荐以…

张小明 2026/1/8 11:27:02 网站建设

淘宝优惠劵做网站模版网站调研怎样做

Vedbo 是一个创意拖放主题,专为热情的网络爱好者打造和设计。Vedbo 的关键功能是前端构建器,比如Elementor作为页面构建器,而实时定制器作为主题选项,这两个功能都完美无缺,运行得非常出色。 独特的设计和强大的选项提…

张小明 2026/1/5 7:32:18 网站建设

网站已在别处备案怎么转入阿里云云主机云服务器

Eclipse Open VSX终极指南:快速发布VS Code扩展的完整教程 【免费下载链接】openvsx Eclipse OpenVSX: 是一个开源的Visual Studio Code Marketplace,用于发布和安装扩展。适合开发者、插件作者和工具提供商。特点包括提供简单易用的API和SDK、支持多种编…

张小明 2026/1/5 7:33:37 网站建设

一级域名建站网站建设行吗网站 建设标准

还在为魔兽世界复杂的技能循环和手动操作而烦恼吗?GSE Advanced Macro Compiler为您带来革命性的游戏体验升级!这个强大的宏编译器让技能自动化变得前所未有的简单,无论您是游戏新手还是资深玩家,都能在短短几分钟内掌握核心用法。…

张小明 2026/1/5 21:58:06 网站建设