首页 > 编程语言 >Java学习笔记(十四)

Java学习笔记(十四)

时间:2023-06-05 09:24:03浏览次数:49  
标签:字符 Java 读取 文件 笔记 缓冲区 十四 数据 字节

1. 请描述你理解的IO流的作用

 I/O流(输入/输出流)的作用是在程序与外部世界(例如文件、网络、控制台等)之间传输数据。

2. 请描述I/O流的体系结构

(1)InputStream类和OutputStream类,其实现类:FileInputStream和FileOutputStream

(2)Reader类和Writer类,其实现类:FileReader和FileWriter

(3)缓冲流:缓冲流可以提高I/O流的性能,BufferedInputStream、BufferedOutputStream、BufferedReader和BufferedWriter等缓冲流类。

3. 请描述什么情况下需要写出/读取一个字节数组

文件的拷贝、加密、修改文件中的数据

4. 数据读写操作后,为什么要关闭流资源

(1) 释放系统资源:在打开文件或网络连接等操作时,会占用系统资源。如果不关闭流资源,这些资源将一直被占用,直到程序退出。 

(2) 避免数据丢失:在进行数据写入操作时,数据通常会被缓存到内存中,而不是立即写入到磁盘或网络连接中。如果不关闭输出流,缓冲区中的数据可能会丢失。

(3) 避免数据损坏:在进行数据写入操作时,如果流没有被正确关闭,可能会导致数据损坏。例如,在写入网络连接时,如果流没有被正确关闭,数据包可能会被截断或丢失,从而导致数据的损坏。

(4) 避免内存泄漏:在进行数据读取操作时,如果不关闭输入流,可能会导致内存泄漏。这是因为输入流可能会在内存中缓存大量数据,这些数据将一直占用内存,直到程序退出。

5. 字节输入流读取文件时,需要注意什么?

(1) 文件路径:在创建字节输入流对象时,需要指定要读取的文件的路径。

(2) 文件存在:如果要读取的文件不存在,将会导致文件读取失败。在读取文件之前,应该确保文件存在。

(3) 文件不存在:如果要读取的文件不存在,将会导致文件读取失败。在读取文件之前,应该确保文件存在。

(4) 缓冲区大小:在读取文件时,可以使用缓冲区来提高读取性能。但是,缓冲区的大小应该适当。如果缓冲区太小,将会导致读取性能下降。如果缓冲区太大,将会占用过多的内存。

(5) 异常处理

6. 请总结字节流与字符流的区别

 (1) 组成不同

字节流的组成:字节流是由字节组成的。
字符流的组成:字符流是由字符组成的。

(2)缓冲区不同

(3)操作对象的不同

字节流 :字节读写,字节流(ASCII)处理二进制文件。可以传输音频,视频,图片,文本等,传输数据的基本单位为字节。

字符流:快读写,字符流(Unicode)处理文本文件。只能传输纯文本,传输数据的基本单位为字符 。

(4)两者的处理不同

字节流是最基本的,采用ASCII编码,所有的InputStream和OutputStream的子类都是,主要用在处理二进制数据,它是按字节来处理的

字符流采用Unicode编码.它是按虚拟机的encode来处理,也就是要进行字符集的转化

7. 请描述字符流的原理

(1)字符流的基本单位是字符:字符流是以Unicode字符为基本单位的,可以读取和写入不同编码的字符数据。

(2)字符流的读取:当读取字符数据时,字符流会根据指定的编码格式将字节数据转换为字符数据。例如,当使用InputStreamReader类读取字符流时,可以指定字符编码格式,例如UTF-8、GBK等。

(3)字符流的写入:当写入字符数据时,字符流会将字符数据转换为字节数据,并写入到底层输出流中。例如,当使用OutputStreamWriter类写入字符流时,可以指定字符编码格式,例如UTF-8、GBK等。

(4)缓冲:字符流可以使用缓冲区来提高读写性能。当读取或写入字符数据时,字符流会将数据存储在缓冲区中,当缓冲区满了或达到一定条件时,才会将缓冲区中的数据写入到底层输入流或输出流中。

(5)自动刷新:字符流还可以自动刷新缓冲区。当缓冲区满了或达到一定条件时,字符流会自动将缓冲区中的数据写入到底层输入流或输出流中。这可以确保数据及时写入底层流中,避免数据丢失。

8. 请描述字节、字符各自的输入流中read(无参)、read(有参)返回值有什么不同

 如果不传参,则读取一个字节或字符,如果传参,则读取多个字节或字符。

9.flush()和close()的区别

flush刷新之后,还可以继续往文件中写出数据

close则断开通道,无法再往文件中写出数据

标签:字符,Java,读取,文件,笔记,缓冲区,十四,数据,字节
From: https://www.cnblogs.com/wgh123/p/17456966.html

相关文章

  • Java Map 集合类简介
    源:http://www.oracle.com/technetwork/cn/articles/maps1-100947-zhs.html#T1评:了解最常用的集合类型之一Map的基础知识以及如何针对您应用程序特有的数据优化Map。java.util中的集合类包含Java中某些最常用的类。最常用的集合类是List和Map。......
  • 04.如何创建并运行java线程
    评:原文链接译者:章筱虎校对:方腾飞Java线程类也是一个object类,它的实例都继承自java.lang.Thread或其子类。可以用如下方式用java中创建一个线程:查看源代码打印帮助1Treadthread=newThread();执行该线程可以调用该线程的start()方法:查看源代码打印帮助1thre......
  • Java URL正则表达式
    评:网上转贴的Java正则很让人失望,一篇JavaScript正则集录被很多人当成Java正则表达式转来转去,我擦,太坑爹了吧。自己写一个吧importjava.util.regex.Matcher;importjava.util.regex.Pattern;publicclassRegularExpressionTest{publicstaticvoidmain(S......
  • 浅谈java异常[Exception]
    评:一.异常的定义在《java编程思想》中这样定义异常:阻止当前方法或作用域继续执行的问题。虽然java中有异常处理机制,但是要明确一点,决不应该用"正常"的态度来看待异常。绝对一点说异常就是某种意义上的错误,就是问题,它可能会导致程序失败。之所以java要提出异常处理机制,就是要......
  • 商城系统比较(三款不错的java开源商城系统推荐)和其他推荐
    今天给大家分享三套github上优质的商城开源项目,排名不分先后。1、newbee-mall(新蜂商城)仓库地址:https://github.com/newbee-ltd/newbee-mall特点:springboot开发,主要针对pc端,代码设计非常简洁,没有过多的分层,非常适合初学者学习。 2、macrozheng/mall(没有中文名,不太好记)仓库地......
  • java的异常
    异常:程序中发生的不正常的情况成为异常(语法错误和逻辑错误不是异常)。异常分为两类:1.Error:java虚拟机无法解决的严重问题,程序会崩溃,如栈溢出(stackoverflowerror)、内存不足等2.Exception:由于编程错误或外在因素导致的一般性问题,可以使用正对行的代码进行处理,如......
  • JAVA动态代理内部实现
    评:一代理设计模式代理模式为目标对象提供一种代理以控制对实际对象的访问。在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。为了保持行为的一致性,代理类和实际委托类通常会实现相同的接口,所以在访问者看来两者没......
  • 一文吃透Java并发高频面试题
    内容摘自我的学习网站:topjavaer.cn分享50道Java并发高频面试题。线程池线程池:一个管理线程的池子。为什么平时都是使用线程池创建线程,直接new一个线程不好吗?嗯,手动创建线程有两个缺点不受控风险频繁创建开销大为什么不受控?系统资源有限,每个人针对不同业务都可以手动......
  • Ubuntu22.04 安装 java JDK
    0前言1下载jdk2.配置环境变量(只修改用户配置)参考0前言Linux一般使用openjdk,其主要由Oracle提供,部分源码不可见一般学习以jdk8为基础.以下教程为jdk8的Linux-Ubuntu的安装教程1下载jdkOracle网站:https://www.oracle.com/java/technologies/downloads/#java8下载后......
  • pyqt5笔记-菜单与工具栏
    目录主窗口状态栏动作组合菜单栏子菜单勾选菜单右键菜单工具栏关闭当前窗口和结束应用程序主窗口QMainWindow就是主窗口,QMainWindow提供了更多的特性,如菜单栏、工具栏、状态栏和停靠窗口等,它是为复杂的主窗口应用设计的。QMainWindow继承自QWidget,所以QMainWindow不仅可以......