4月11号总结

java学习

一.io流

简介:io,i代表in,指的是输入,o代表输出。io流是用于处理输入和输出数据的机制。Java的io流主要分为字节流和字符流两种类型。这些流可以用于读取和写入不同类型的数据,如文本,图片,声音等。

1.字节输入流
1.1 字节输入流读取单个字节

我们首先需要实例化一个FileInputStream对象,并且指向一个文件,这里我们先用文本文件。

对对象调用read方法。

InputStream s1=new FileInputStream("src\\io\\12.txt");int b1;b1=s1.read();System.out.println(b1);s1.close();

文件内部

这里是读取了字符的ASCll码值,可以将其转成字符。

InputStream s1=new FileInputStream("src\\io\\12.txt");int b1;b1=s1.read();System.out.println((char)b1);s1.close();

我们还可以用循环将字符一次性读取完。

因为当文件数据读取完后,再读取会返回-1,所以可以利用这个特性去写循环代码。

 InputStream s1=new FileInputStream("src\\io\\12.txt");int b1;while ((b1= s1.read())!=-1){System.out.print((char) b1);}s1.close();

注意:在utf-8编码格式中中文占3个字节,所以文本有中文会读取异常。

需要注意的是,我们在往后的使用中,文件的数据通常有几十万个字节,如果我们一个一个读取就会需要循环几十万次,这样效率太低了,所以我们可以一次读取多个字节。

1.2 字节输入流读取多个字节

我们可以使用数组,每次最多装的字节数就是数组的容量。

InputStream s1=new FileInputStream("src\\io\\12.txt");byte[] buffer=new byte[3];int length=s1.read(buffer);System.out.println(new String(buffer, 0, length));s1.close();

这里我们设置每次读取3个字节,然后用字符串转换输出。

我们也可以用循环输出全部字节。

 InputStream s1=new FileInputStream("src\\io\\12.txt");byte[] buffer=new byte[3];int length;while ((length=s1.read(buffer))!=-1){System.out.print(new String(buffer, 0, length));}s1.close();

那这里为什么又能输出中文了呢?

因为在输出中文时,是一次性将中文所占的三个字节全部拿出了,如果再整合成了一个字符,如果你换一下文本前面字母数字的个数,输出还是会异常。

通过字节输入流读取多个字节可以自定义选择读取的字节数,并且也可以加快读取速度。

2.字节输出流

2.1 字节输出流读取单个字符

这里和输入的格式也是一样,只是实例化的对象变为FileOutputStream,调用write方法可以写入你想要写入的字符。

 OutputStream r1=new FileOutputStream("src\\io\\12.txt");r1.write('1');r1.write('2');r1.write('3');r1.write('4');r1.close();

里面也可以放入ASCll码值,比如放入97,就会存入'a'。

2.2字节输出流读取多个字符

还是和上面一样使用到数组。

  OutputStream r1=new FileOutputStream("src\\io\\12.txt");byte[] bytes={98,99,100,101,102,103,104};r1.write(bytes);r1.close();

如果想不覆盖原文件内容而是直接追加,那我们只需要在文件路径后面加true。

 OutputStream r1=new FileOutputStream("src\\io\\12.txt",true);byte[] bytes={98,99,100,101,102,103,104};r1.write(bytes);r1.close();

字节流由于其特性,可以输入输出任何数据,但是对文本文件的输入输出的效果却比不上字符流方便,所有在处理文本文件尽量使用字符流,也可以很好对中文进行处理。

3.字符输入流

3.1 字符输入读取单个字符

这里使用FileReader示例化对象,也是调用read方法,可以输入中文。

循环输入全部字符

Reader r1=new FileReader("src\\io\\12.txt");int c;while ((c=r1.read())!=-1) {System.out.print((char)c);}r1.close();
3.2 字符输入读取多个字符

使用字符数组

 Reader r1=new FileReader("src\\io\\12.txt");int c;char[] buffer=new char[4];r1.read(buffer);System.out.println(new String(buffer, 0, 4));r1.close();

循环读取

 Reader r1=new FileReader("src\\io\\12.txt");int c;char[] buffer=new char[4];while ((c=r1.read(buffer))!=-1){System.out.println(new String(buffer, 0, c));}r1.close();

4.字符输出流

4.1 字符输出流读取单个字符

实例化FileWriter对象,然后调用write方法,直接往里面放字符。

 Writer r1=new FileWriter("src\\io\\12.txt");r1.write('1');r1.write('王');r1.close();
4.2 字符输出流读取多个字符

可以直接在writer方法里面放字符串。

 Writer r1=new FileWriter("src\\io\\12.txt");r1.write("你好世界");r1.close();

也可以输出部分,方法起始点和长度即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/808439.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【洛谷】P1216 数字三角形

import java.io.IOException; import java.util.Scanner;public class P1216_数字三角形_DP_原版 {public static void main(String[] args) {Scanner sc new Scanner(System.in);int n sc.nextInt();int[][] dp new int[n 1][n 1];int t;for (int i 1; i < n; i) {fo…

Ollama教程——兼容OpenAI API:高效利用兼容OpenAI的API进行AI项目开发

相关文章: Ollama教程——入门&#xff1a;开启本地大型语言模型开发之旅 Ollama教程——模型&#xff1a;如何将模型高效导入到ollama框架 Ollama教程——兼容OpenAI API&#xff1a;高效利用兼容OpenAI的API进行AI项目开发 Ollama教程——兼容OpenAI API&#xff1a;高效利用…

推荐一个大学生可以参加的榜单赛事|人工智能赛道

【榜单赛事】第十四届全国大学生计算机应用能力与数字素养大赛 - 人工智能产业应用赛道人工智能编程赛项 正在火热报名中 本赛道定位于人工智能产业应用和实践&#xff0c;把人工智能产业真实的技能要求、能力要求体现在竞赛内容设计当中&#xff0c;并在竞赛环节融入实战项目…

软考121-上午题-【软件工程】-敏捷方法

一、敏捷方法 敏捷开发的总体目标是通过“尽可能早地、持续地对有价值的软件的交付”使客户满意。通过在软件开发过程中加入灵活性&#xff0c;敏捷方法使用户能够在开发周期的后期增加或改变需求。 敏捷过程的典型方法有很多&#xff0c;每一种方法基于一套原则&#xff0c;这…

阻塞队列和基本实现

1. 什么是阻塞队列 阻塞队列,从名字上看,它首先应该是一个队列,满足先进先出的原则.其次,我们来理解一下"阻塞"这个词.我们之前其实见过这个词,在介绍线程的状态时,我们讲过有一种状态就是阻塞状态.所谓的"阻塞",也就是一种等待,需要其他的线程进行唤醒,在…

跟TED演讲学英文:The next grand challenge for AI by Jim Fan

The next grand challenge for AI Link: https://www.ted.com/talks/jim_fan_the_next_grand_challenge_for_ai? Speaker: Jim Fan Date: October 2023 文章目录 The next grand challenge for AIIntroductionVocabularyTranscriptSummary后记 Introduction Researcher Jim…

Terraform 语法配置

配置语法 Terraform 的配置文件都是以 .tf 为后缀Terraform 支持两种模式 HCL、JSON Provider 插件 providers 地址&#xff1a;Terraform Registry Terraform 通过 provider 管理基础设施&#xff0c;使用 provider 与云供应商 API 进行交互&#xff0c;每个 Provider 都包含…

多线程的学习

多线程编辑&#xff1a; 可以简单理解进程是一个软件 而线程就是一个软件中多个可以同时运行的功能 实现多线程的第一种方式&#xff1a;使用Thead类我们再自己创造一个类继承于这个类我们在对Thead方法进行重写&#xff0c;注意我们再重写的时候一定要加上Override这行 我犯下…

多线程回答的滚瓜烂熟,面试官问我虚线程了解吗?我说不太了解!

Java虚拟线程&#xff08;Virtual Threads&#xff09;标志着Java在并发编程领域的一次重大飞跃&#xff0c;特别是从Java 21版本开始。这项新技术的引入旨在克服传统多线程和线程池存在的挑战。 多线程和线程池 在Java中&#xff0c;传统的多线程编程依赖于Thread类或实现Ru…

2024 年“认证杯”数学中国数学建模网络挑战赛

题目 C题 云中的海盐 巴黎气候协定提出的目标是&#xff1a;在 2100 年前&#xff0c;把全球平均气温相对于工业 革命以前的气温升幅控制在不超过 2 摄氏度的水平&#xff0c;并为 1.5 摄氏度而努力。 但事实上&#xff0c;许多之前的研究已经指出&#xff0c;全球的碳排放以及…

主从数据同步原理

2.2.主从数据同步原理 2.2.1.全量同步 主从第一次建立连接时&#xff0c;会执行全量同步&#xff0c;将master节点的所有数据都拷贝给slave节点&#xff0c;流程&#xff1a; 这里有一个问题&#xff0c;master如何得知salve是第一次来连接呢&#xff1f;&#xff1f; 有几个…

Linux操作系统的学习

Linux系统的目录结构 / 是所有目录的顶点目录结构像一颗倒挂的树 Linux常用命令 常见命令 序号命令对应英文作用1lslist查看当前目录下的内容2pwdprint work directory查看当前所在目录3cd [目录名]change directory切换目录4touch [文件名]touch如果文件不存在&#xff0c;新…

6.11物联网RK3399项目开发实录-驱动开发之定时器的使用(wulianjishu666)

嵌入式实战开发例程【珍贵收藏&#xff0c;开发必备】&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1tkDBNH9R3iAaHOG1Zj9q1Q?pwdt41u 定时器使用 前言 RK3399有 12 个 Timers (timer0-timer11)&#xff0c;有 12 个 Secure Timers(stimer0~stimer11) 和 2 个 …

鸿蒙实战开发-如何实现标准化数据定义与描述的功能。

介绍 本示例主要使用ohos.data.uniformTypeDescriptor 展示了标准化数据定义与描述的功能&#xff0c;在新增预置媒体文件后&#xff0c;对媒体文件的utd标准类型获取、utd类型归属类型查询、获取文件对应的utd类型的默认图标、支持自定义数据类型等功能。 实现过程中还使用到…

AcWing-直方图中最大的矩形

131. 直方图中最大的矩形 - AcWing题库 所需知识&#xff1a;单调栈 思路&#xff1a;要求最大矩形&#xff0c;所以需要使矩形的高与长的乘积最大即可&#xff0c;依次从左到右将每一列当作中心列&#xff0c;向两边扩散&#xff0c;直到两边的高都小于该列的高&#xff0c;…

Vmware虚拟机Centos7固定IP地址

1、点击编辑-虚拟网络编辑器 2、点击更改设置、修改虚拟网络配置器并确认保存&#xff08;见图&#xff09; 这个子网IP和子网掩码的前三位需要一样网关的前三位需要和子网ip一致。 3、打开设置“网络和Internet”&#xff0c;点击“更改适配器选项”&#xff0c;点击适配器VM…

PP-LCNet:一种轻量级CPU卷积神经网络

PP-LCNet: A Lightweight CPU Convolutional Neural Network 最近看了一个新的分享&#xff0c;在图像分类的任务上表现良好&#xff0c;具有很高的实践意义。 论文&#xff1a; https://arxiv.org/pdf/2109.15099.pdf项目&#xff1a; https://github.com/PaddlePaddle/Padd…

JUC并发编程2(高并发,AQS)

JUC AQS核心 当有线程想获取锁时&#xff0c;其中一个线程使用CAS的将state变为1&#xff0c;将加锁线程设为自己。当其他线程来竞争锁时会&#xff0c;判断state是不是0&#xff0c;不是自己就把自己放入阻塞队列种&#xff08;这个阻塞队列是用双向链表实现&#xff09;&am…

探索ChatGPT-Plus:AI 助手全套开源解决方案

探索ChatGPT-Plus&#xff1a;AI 助手全套开源解决方案 ChatGPT-plus是一种新型的对话生成模型&#xff0c;它是在OpenAI的ChatGPT基础上进行了改进和优化的版本。ChatGPT-plus的出现引起了广泛关注&#xff0c;因为它在对话生成方面展现出了更加出色的表现和能力。在本文中&am…

蒙特卡洛方法【强化学习】

强化学习笔记 主要基于b站西湖大学赵世钰老师的【强化学习的数学原理】课程&#xff0c;个人觉得赵老师的课件深入浅出&#xff0c;很适合入门. 第一章 强化学习基本概念 第二章 贝尔曼方程 第三章 贝尔曼最优方程 第四章 值迭代和策略迭代 第五章 强化学习实践—GridWorld 第…