Java的字符流和字节流

news2025/1/20 18:37:01

Java的字节流:把数据从程序存储到文件,把数据从文件读取程序中

File:只操作文件和文件属性,createNewFile

getPath--->项目目录 ,getAbsolutePath()

getName()---->substring()

list()-->列出当前目录的所有文件或文件夹,返回值String[] ,返回只有文件名,路径可以拼接

listFiles()---->列出当前目录的所有文件或文件夹,返回值是File[],调用File的方法去进行处理

字节流

返回的整型int

输入流 FileInputStream   read方法   最后关闭close

输出流 FileOutputStream  write方法  最后关闭close

性能指标参考:System. currentTimeMillis(),具体的时间戳.

实际处理问题,一般是有缓存,定义一个字节数组byte[]

系统提供了缓存的类

BufferInputStream-->(FileReader)FileInputStream-->File

缓存输入类 BufferedInputStream  

缓存输出类 BufferedOutputStream

底层写缓存的方法,与我们自己定义字节数组缓存思想一样.
BufferedInputStream缓存数字是8192  (8K)

文件内容放在Buffer中,读的时候用BufferedInputStream,写的时候用BufferOutputStream

字节流:处理文件传输

字符流:专门针对于文本文件处理

FileReader-->FileInputStream-->File, 底层是Reader类

FileWriter, 底层是Writer类

实质还是字节,只不过处理过程用char

Reader的缓存类BufferedReader,这个类中readLine,读文本文件处理,往往项目需求按行读

Buffer,使用缓存,write后一定flush(),如果关闭,自动flush()

在应用缓存的开发中,这里有三种操作:剪切,复制,粘贴。剪切,复制对文字是100%有效,字符流更好保证了剪切,复制,粘贴。

不执行flush(),数据在缓存中,flush()之后数据变成实际的文件

剪切是不清楚这个文件剪切,剪切是不保存文件的,

剪切逻辑: 

首先把文件全部在缓存中,不执行flush()方法,只有粘贴时执行flush方法,New Writer里面传File,File没有路径是做不了的.相当于剪切必须知道剪切到哪里.实际操作是不知道路径的,就必须有一个路径先有效,后期把路径覆盖.

所以每个人电脑都有一个预先的路径设置,预先设置的路径是临时文件.(tmp)

文件剪切,执行文件到缓存中,同时在源路径删除 , 实际开发,用buffer产生临时文件.  执行到粘帖时,把缓存中的数据flush就可以。剪切,一定需要Buffer

复制

复制文件:

首先文件是否存在,不存在,报错:文件不存在

如果文件存在,复制到缓存中,不flush, 自己找一个路径,做临时文件的路径,用户选择粘贴:输入粘贴的地址:地址是文件是文件夹,文件夹(有没有无所谓,创建文件夹)

文件(创建文件)flush, 复制不删除原文件

//定义执行时间记录
        long start=System.currentTimeMillis();
        //复制文件,有输入,有输出,输入一个路径,输出一个路径
        //FileInputStream输入流,有输入
        FileInputStream fis=new FileInputStream("C:\\Users\\Administrator\\Desktop\\aaa.png");
        //FileOutputStream 输出流,有输出
        FileOutputStream fos=new FileOutputStream("C:\\Users\\Administrator\\Desktop\\bbb.png");
        int ch=0;
        while((ch=fis.read())!=-1){
            fos.write(ch);
        }
        //结束后flush
//        fos.flush();
        //流运行结束,一定要关闭
        fis.close();
        fos.close();

剪切:

首先文件是否存在,不存在,报错:文件不存在 , 如果文件存在,复制到缓存中,不flush

但是把原文件删除掉 , 用户粘帖,用把flush到这个路径,无论复制,剪切,到粘帖,把临时文件中产生的临时文件干掉.

代码在码云:


 面向接口开发.

Java线程

Java面临的问题并发的问题

同时: 并发 (访问程序时多个用户对程序同时操作)

模拟抢票

面向对象

类->票   

 当前写法还是主线程的程序调用for循环

public class MyMain {
    public static void main(String[] args) throws Exception {
        //new实例化,把MyTrain初始化,才有100张票,放在循环里,就是每个人都有100张票
        //现在只有一趟火车,100张票
        MyTrain mytrain=new MyTrain();
        //这里的i就是100个人
        for(int i=0;i<100;i++){
            System.out.println(mytrain.fetch());
        }
    }
}

 模拟并发,开线程

进程,在进程中可能并发的过程,并发的过程就是线程.

进程是一条火车道,每个火车都走自己的线,

线程:java中的每一个程序抢票,模拟多线程抢票

Thread线程类

线程是需要运行的 run方法

@Override
public int fetch() {
   if(tickets<=0){
       return -1;
   }
   return --tickets;}

源代码在码云 Gitee,有需要的小伙伴自取哦:

Java的字符流和字节流抢票代码 · zyt/麦当劳投资人 - Gitee.comicon-default.png?t=N7T8https://gitee.com/zytscode/mcdonalds-investors/blob/master/Java%E7%9A%84%E5%AD%97%E7%AC%A6%E6%B5%81%E5%92%8C%E5%AD%97%E8%8A%82%E6%B5%81%E6%8A%A2%E7%A5%A8%E4%BB%A3%E7%A0%81

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

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

相关文章

vue+less+style-resources-loader 配置全局颜色变量

全局统一样式后&#xff0c;可配置vue.config.js实现全局颜色变量&#xff0c;方便在编写时使用统一风格的色彩 一、新建global.less 二、下载安装style-resources-loader npm i style-resources-loader --save-dev三、在vue.config.js中进行配置 module.exports {pluginOpt…

架构图是什么,该怎么制作?

架构图是指可视化展示软件、系统、应用程序、网络等各种体系结构的一类图表或图形&#xff0c;它能够形象地展示体系结构中各个组成部分和它们之间的关系。 架构图的类型 架构图的种类比较多&#xff0c;逐一列举不太合适&#xff0c;这里只列举一些常见的架构图类型&#…

爬虫-基于python的旅游景点推荐系统的设计与实现-计算机毕业设计源码24044

摘 要 21世纪时信息化的时代&#xff0c;几乎任何一个行业都离不开计算机&#xff0c;将计算机运用于旅游景点管理也是十分常见的。过去使用手工的管理方式对旅游景点进行管理&#xff0c;造成了管理繁琐、难以维护等问题&#xff0c;如今使用计算机对旅游景点的各项基本信息进…

2021年2月16日 Go生态洞察:Go 1.16版本发布

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

CentOS 7 部署 Nacos (单机版)

CentOS 7 部署 Nacos &#xff08;单机版&#xff09; 1. 下载 Nacos 安装包 历史版本&#xff1a;https://github.com/alibaba/nacos/releases/ 我选的是 2.1.0 版本&#xff0c;https://github.com/alibaba/nacos/releases/download/2.1.0/nacos-server-2.1.0.tar.gz 2. …

2021年09月 Scratch图形化(三级)真题解析#中国电子学会#全国青少年软件编程等级考试

Scratch等级考试(1~4级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 程序中要使用不确定的数值,这时要用到的是?( ) A、图章 B、变量 C、广播 D、随机数 答案:D 第2题 执行下列程序后,角色会说?( ) A、3 B、6 C、10 D、15 答案:D 第3题…

现货白银怎样数点数?

由于数十倍资金杠杆的存在&#xff0c;现货白银投资者可以把很细微的行情波动&#xff0c;转化为相对显著的收益。但另一方面&#xff0c;现货白银交易过程中会难免会涉及一定的点差成本&#xff0c;所以投资者在入市之前&#xff0c;一定要清晰地知道自己需要能够拿下多少的行…

onlyoffice文件大小超出了服务器设置处理

onlyoffice文件大小超出了服务器设置处理 1.前言2. onlyoffice服务安装2.1 docker安装命令2.2 访问测试 3. 修改服务器文件大小限制方案3.1 旧方案-7.2版本不可行3.1.1 进入 OnlyOffice Document Server 容器3.1.2 编辑配置文件3.1.3 找到并修改文件大小限制3.1.4 保存并退出编…

封装一些可能会用到的JS的Dom操作方法(非JS自带的方法)

1. 父元素节点下的子元素节点逆序 HTMLElement.prototype.childRevers function () {var all_num this.childElementCount;if (all_num) {while(all_num--){this.appendChild(this.children[all_num]);}} } // 获取 ul 父节点对象 var oul document.getElementsByTagName(u…

python获取系统当前进程数和最大进程数

参考&#xff1a; https://blog.51cto.com/u_16213345/7115864 https://www.baidu.com/s?wdpython%20%E8%8E%B7%E5%8F%96%E7%B3%BB%E7%BB%9F%E5%BD%93%E5%89%8D%E8%BF%9B%E7%A8%8B%E6%95%B0%E5%92%8C%E6%9C%80%E5%A4%A7%E8%BF%9B%E7%A8%8B%E6%95%B0&rsv_spt1&rsv_iqid…

基于YOLOv8深度学习的PCB板缺陷检测系统【python源码+Pyqt5界面+数据集+训练代码】目标检测

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能AI、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推荐--…

M1安装RabbitMQ

1.查看centos内核版本 uname -a uname -r2.安装之前的准备工作 安装RabbitMQ必装Erlang(RabbitMQ官网添加链接描述) 2.1.Erlang简介 Erlang是一种通用的面向并发的编程语言&#xff0c;它由瑞典电信设备制造商爱立信所辖的CS-Lab开发&#xff0c;目的是创造一种可以应对…

Java高级技术(动态代理)

一&#xff0c;代理 二&#xff0c;案例 放到代码中演示&#xff1a; 首先&#xff0c;创建一个明星接口&#xff0c;这个接口有一个skill方法&#xff0c;说明只要是明星就必须有点技能。 public interface Star {void skill(); } 然后&#xff0c;创建坤坤对象&#xff0c…

第八天:信息打点-系统端口CDN负载均衡防火墙

信息打点-系统篇&端口扫描&CDN服务&负载均衡&WAF防火墙 一、知识点 1、获取网络信息-服务器厂商&#xff1a; 阿里云&#xff0c;腾讯云&#xff0c;机房内部等。 网络架构&#xff1a; 内外网环境。 2、获取服务信息-应用协议-内网资产&#xff1a; FTP…

服务运营 |精选:床位知多少?医院调度的几种建模方法(下)

编者按&#xff1a; 住院流程&#xff08;Inpatient Flow&#xff09;是一种通过协调和优化医院内部流程&#xff0c;以提高患者入院至出院期间的效率和质量的方法。住院流程通常通过医院内部信息系统和协同工作流程进行管理&#xff0c;以确保患者得到及时的诊断、治疗和护理…

深度学习代码优化(Config,Registry,Hook)

社区开放麦#9 | OpenMMLab 模块化设计背后的功臣 1. 配置文件管理Config 1.1 早期配置参数加载 早期深度学习项目的代码大多使用parse_args&#xff0c;在代码启动入口加载大量参数&#xff0c;不利于维护。 常见的配置文件有3中格式&#xff1a;python、json、yaml 格式的配…

Cytoscape软件下载、安装、插件学习[基础教程]

写在前面 今天分享的内容是自己遇到问题后&#xff0c;咨询社群里面的同学&#xff0c;帮忙解决的总结。 关于Cytoscape&#xff0c;对于做组学或生物信息学的同学基本是陌生的&#xff0c;可能有的同学用这个软件作图是非常溜的&#xff0c;做出来的网络图也是十分的好看&am…

Golang中rune和Byte,字符和字符串有什么不一样

Rune和Byte&#xff0c;字符和字符串有什么不一样 String Go语言中&#xff0c; string 就是只读的采用 utf8 编码的字节切片(slice) 因此用 len 函数获取到的长度并不是字符个数&#xff0c;而是字节个数。 for循环遍历输出的也是各个字节。 Rune rune 是 int32 …

Google分析中的基础概念

当提到Google分析时&#xff0c;我们通常指的是一种用于跟踪和分析网站和应用程序数据的工具。在使用Google分析之前&#xff0c;了解其基础概念对于正确配置和有效使用该工具非常重要。 1、帐户&#xff08;Account&#xff09;&#xff1a;帐户是Google分析中的最高层级。一…

Linux系统之uptime命令的基本使用

Linux系统之uptime命令的基本使用 一、uptime介绍二、uptime命令使用帮助2.1 uptime的help帮助信息2.2 uptime的语法解释 三、uptime的基本使用3.1 直接使用uptime命令3.2 显示uptime版本信息3.3 显示系统运行时间3.4 显示系统最后一次启动时间 四、uptime命令的使用注意事项 一…