缓冲流
Java 的缓冲流是对字节流和字符流的一种封装,通过在内存中开辟缓冲区来提高 I/O 操作的效率。Java 通过 BufferedInputStream 和 BufferedOutputStream 来实现字节流的缓冲,通过 BufferedReader 和 BufferedWriter 来实现字符流的缓冲。 缓冲流的工作原理是将数据先写入缓冲区中,当缓冲区满时再一次性写入文件或输出流,或...
Java 的缓冲流是对字节流和字符流的一种封装,通过在内存中开辟缓冲区来提高 I/O 操作的效率。Java 通过 BufferedInputStream 和 BufferedOutputStream 来实现字节流的缓冲,通过 BufferedReader 和 BufferedWriter 来实现字符流的缓冲。 缓冲流的工作原理是将数据先写入缓冲区中,当缓冲区满时再一次性写入文件或输出流,或...
使用字节流该如何正确地读出中文: try (FileInputStream inputStream = new FileInputStream("a.txt")) { byte[] bytes = new byte[1024]; int len; while ((len = inputStream.read(bytes)) != -1) { Syst...
字节输出流(OutputStream) java.io.OutputStream 是字节输出流的超类(父类),我们来看一下它定义的一些共性方法: 1、 close() :关闭此输出流并释放与此流相关联的系统资源。 2、 flush() :刷新此输出流并强制缓冲区的字节被写入到目的地。 3、 write(byte[] b):将 b.length 个字节从指定的字节数组写入此输出流。...
java.io.File 类是专门对文件进行操作的类,注意只能对文件本身进行操作,不能对文件内容进行操作,想要操作内容,必须借助输入输出流。 File 类是文件和目录的抽象表示,主要用于文件和目录的创建、查找和删除等操作。 File 构造方法 比较常用的构造方法有三个: 1、 File(String pathname) :通过给定的路径来创建新的 File 实例。 2、 Fil...
Java 的 IO 分为两大类,一类是传统的 IO(Blocking IO),一类是 NIO(New IO)。 传统的 IO 基于字节流和字符流,以阻塞式 IO 操作为主。常用的类有 FileInputStream、FileOutputStream、InputStreamReader、OutputStreamWriter 等。这些类在读写数据时,会导致执行线程阻塞,直到操作完成。 Jav...
class CSer { private String name; private int age; public CSer() { } public CSer(String name, int age) { this.name = name; this.age = age; } public St...
IO,即in和out,也就是输入和输出,指应用程序和外部设备之间的数据传递,常见的外部设备包括文件、管道、网络连接。 Java 中是通过流处理IO 的,那么什么是流? 流(Stream),是一个抽象的概念,是指一连串的数据(字符或字节),是以先进先出的方式发送信息的通道。 当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接。类似的,当程序需要...
生产者-消费者,实际上包含了两类线程,一种是生产者线程用于生产数据,另一种是消费者线程用于消费数据,为了解耦生产者和消费者的关系,通常会采用共享的数据区域,生产者生产数据之后直接放置在共享数据区中,并不需要关心消费者的行为;而消费者只需要从共享数据区中获取数据,不需要关心生产者的行为。如果共享数据区已满的话,阻塞生产者继续生产数据;如果共享数据区为空的话,阻塞消费者继续消费数据。 在实现生...
ArrayList 是一个线程不安全的容器,如果在多线程环境下使用,需要手动加锁,或者使用 Collections.synchronizedList() 方法将其转换为线程安全的容器。否则,将会出现 ConcurrentModificationException 异常。 CopyOnWriteArrayList 是线程安全的,可以在多线程环境下使用。CopyOnWriteArrayList...
定时任务 ScheduledThreadPoolExecutor 类有两个用途:指定时间延迟后执行任务;周期性重复执行任务。 JDK 1.5 之前,主要使用Timer类来完成定时任务,但是Timer有以下缺陷: Timer 是单线程模式; 如果在执行任务期间某个 TimerTask 耗时较久,就会影响其它任务的调度; Timer 的任务调度是基于绝对时间的,对系统时间敏感;...