首页 > 编程语言 >Java SE入门及基础(45)

Java SE入门及基础(45)

时间:2024-03-18 11:30:32浏览次数:20  
标签:字符 Java int 缓冲 45 throws IOException public SE

目录

I / O流(中)

3. 字符流

Writer 常用方法

FileWriter 构造方法

Reader 常用方法

FileReader 构造方法

综合练习

4. 缓冲流

BufferedOutputStream 构造方法

BufferedInputStream 构造方法

BufferedWriter 构造方法

BufferedReader 构造方法

Java SE文章参考:Java SE入门及基础知识合集-CSDN博客


I / O流(中)

3. 字符流

字符流    来自官方的说明
The Java platform stores character values using Unicode conventions. Character stream I/O automatically translates this internal format to and from the local character set. In Western locales, the local character set is usually an 8-bit superset of ASCII. Java 平台使用 Unicode 约定存储字符值。 字符流 I / O 会自动将此内部格式与本地字符集转换。 在西方语言环境中,本地字符集通常是ASCII 的 8 位超集。 All character stream classes are descended from Reader and Writer. As with byte streams, there are character stream classes that specialize in file I/O: FileReader and FileWriter. 所有字符流类均来自 Reader 和 Writer 。 与字节流一样,也有专门用于文件 I / O 的字符流类: FileReader 和 FileWriter 。
Writer 常用方法
public void write ( int c ) throws IOException ; // 写一个字符 public void write ( char cbuf []) throws IOException ; // 将给定的字符数组内容写入到文件中 // 将给定的字符数组中给定偏移量和长度的内容写入到文件中 abstract public void write ( char cbuf [], int off , int len ) throws IOException ; public void write ( String str ) throws IOException ; // 将字符串写入到文件中 abstract public void flush () throws IOException ; // 强制将通道中的数据全部写出 abstract public void close () throws IOException ; // 关闭通道
FileWriter 构造方法
public FileWriter ( String fileName ) throws IOException ; // 根据提供的文件路径构建一条文件输出通道 // 根据提供的文件路径构建一条文件输出通道,并根据 append 的值决定是将内容追加到末尾还是直接覆盖 public FileWriter ( String fileName , boolean append ) throws IOException ; public FileWriter ( File file ) throws IOException ; // 根据提供的文件信息构建一条文件输出通道 // 根据提供的文件信息构建一条文件输出通道,并根据 append 的值决定是将内容追加到末尾还是直接覆盖 public FileWriter ( File file , boolean append ) throws IOException ;
Reader 常用方法
public int read () throws IOException ; // 读取一个字符 public int read ( char cbuf []) throws IOException ; // 读取字符到给定的字符数组中 // 将读取的字符按照给定的偏移量和长度存储在字符数组中 abstract public int read ( char cbuf [], int off , int len ) throws IOException ; abstract public void close () throws IOException ; // 关闭通道
FileReader 构造方法
public FileReader ( String fileName ) throws FileNotFoundException ; // 根据提供的文件路径构建一条文件输入通道 public FileReader ( File file ) throws FileNotFoundException ; // 根据提供的文件信息构建一条文件输入通道
综合练习
使用字符流实现磁盘文件拷贝功能
package com . we . io . _char ; import java . io . * ; public class Example3 {         public static void main ( String [] args ) {                 String sourceFile = "F:\\AA\\io.txt" ;                 String destFile = "F:\\file\\a.txt" ;                 copyFile ( sourceFile , destFile );         }         public static void copyFile ( String sourceFile , String destFile ){                 File file = new File ( destFile );                 File parent = file . getParentFile ();                 if ( ! parent . exists ()) parent . mkdirs ();                         try ( Reader reader = new FileReader ( sourceFile );                                 Writer writer = new FileWriter ( file )){                                 char [] buffer = new char [ 4096 ];                                 while ( true ){                                         int len = reader . read ( buffer );                                         if ( len == - 1 ) break ;                                         writer . write ( buffer , 0 , len );                                 }                                 writer . flush ();                         } catch ( FileNotFoundException e ) {                                 e . printStackTrace ();                         } catch ( IOException e ) {                                 e . printStackTrace ();                         }         } }

4. 缓冲流

缓冲流     来自官方的说明
Most of the examples we've seen so far use unbuffered I/O. This means each read or write request is handled directly by the underlying OS. This can make a program much less efficient, since each such request often triggers disk access, network activity, or some other operation that is relatively expensive. 到目前为止,我们看到的大多数示例都使用无缓冲的 I / O 。 这意味着每个读取或写入请求均由基础操作系统直接处理。 由于每个这样的请求通常会触发磁盘访问,网络活动或某些其他相对昂贵的操作,因此这可能会使程序的效率大大降低。 To reduce this kind of overhead, the Java platform implements buffered I/O streams. Buffered input streams read data from a memory area known as a buffer; the native input API is called only when the buffer is empty. Similarly, buffered output streams write data to a buffer, and the native output API is called only when the buffer is full. 为了减少这种开销, Java 平台实现了缓冲的 I / O 流。 缓冲的输入流从称为缓冲区的存储区中读取数据; 仅当缓冲区为空时才调用本机输入API 。 同样,缓冲的输出流将数据写入缓冲区,并且仅在缓冲区已满时才调用本机输出API 。 There are four buffered stream classes used to wrap unbuffered streams: BufferedInputStream and BufferedOutputStream create buffered byte streams, while BufferedReader and BufferedWriter create buffered character streams. 有四种用于包装非缓冲流的缓冲流类: BufferedInputStream 和 BufferedOutputStream 创建缓冲的字节流,而BufferedReader 和 BufferedWriter 创建缓冲的字符流。
BufferedOutputStream 构造方法
public BufferedOutputStream ( OutputStream out ); // 根据给定的字节输出流创建一个缓冲输出流,缓冲区大小使用默认大小 public BufferedOutputStream ( OutputStream out , int size ); // 根据给定的字节输出流创建一个缓冲输出流,并指定缓冲区大小
BufferedInputStream 构造方法
public BufferedInputStream ( InputStream in ); // 根据给定的字节输入流创建一个缓冲输入流,缓冲区大小使用默认大小 public BufferedInputStream ( InputStream in , int size ); // 根据给定的字节输入流创建一个缓冲输入流,并指定缓冲区大小
BufferedWriter 构造方法
public BufferedWriter ( Writer out ); // 根据给定的字符输出流创建一个缓冲字符输出流,缓冲 区大小使用默认大小 public BufferedWriter ( Writer out , int sz ); // 根据给定的字符输出流创建一个缓冲字符输 出流,并指定缓冲区大小
BufferedReader 构造方法
public BufferedReader ( Reader in ); // 根据给定的字符输入流创建一个缓冲字符输入流,缓冲 区大小使用默认大小 public BufferedReader ( Reader in , int sz ); // 根据给定的字符输入流创建一个缓冲字符输入 流,并指定缓冲区大小

Java SE文章参考:Java SE入门及基础知识合集-CSDN博客

标签:字符,Java,int,缓冲,45,throws,IOException,public,SE
From: https://blog.csdn.net/m0_63181360/article/details/136802918

相关文章

  • java:形参和返回值
    一、抽象类名作为形参和返回值方法形参是抽象类名,其实需要的是该抽象类的子类对象方法的返回值是抽象类名,其实返回的是该抽象类的子类对象二、接口名称作为形参和返回值方法的形参是接口名,其实需要的是该接口的实现类对象方法返回值是接口名,其实返回的是该接口的实现类对象......
  • Jailbreaking Large Language Models in Few Queries via Disguise and Reconstructio
    本文是LLM系列文章,针对《MakingThemAskandAnswer:JailbreakingLargeLanguageModelsinFewQueriesviaDisguiseandReconstruction》的翻译。让他们问答:通过伪装和重建在少数查询中打破大型语言模型的牢笼摘要1引言2背景和问题陈述3LLM微调中的安全偏......
  • row_number, rank(), dense_rank()的区别和用法
    RANK并列跳跃排名,并列即相同的值,相同的值保留重复名次,遇到下一个不同值时,跳跃到总共的排名。DENSE_RANK并列连续排序,并列即相同的值,相同的值保留重复名次,遇到下一个不同值时,依然按照连续数字排名。ROW_NUMBER连续排名,即使相同的值,依旧按照连续数字进行排名。用法:SEL......
  • Disentangled Contrastive Collaborative Filtering 论文阅读笔记
    DisentangledContrastiveCollaborativeFiltering论文阅读笔记Abstract存在的问题:大多数现有的基于gcl的CF模型仍然受到限制,因为忽略了用户-项目交互行为往往是由各种潜在意图因素驱动的(例如,为了家庭聚会购物,首选颜色或产品品牌)引入的非自适应增强技术容易受到噪声信息的......
  • 已解决org.apache.zookeeper.KeeperException.SessionExpiredException异常的正确解决
    已解决org.apache.zookeeper.KeeperException.SessionExpiredException异常的正确解决方法,亲测有效!!!目录问题分析报错原因解决思路解决方法总结 博主v:XiaoMing_JavaApacheZooKeeper是一个开源的分布式协调服务,它被广泛用于维护配置信息、命名注册、提供分布式同步......
  • 问题分析 | 为什么主库Waiting for semi-sync ACK from slave会阻塞set global super_
    作者:卢文双资深数据库内核研发本文首发于2023-12-0321:33:21https://dbkernel.com问题描述为什么主库上有Waitingforsemi-syncACKfromslave的时候,执行setglobalsuper_read_only=ON会导致等待全局读锁?问题复现MySQL主从高可用集群,semi-sync超时无限大:setglob......
  • java jar打包加密操作
    配置XJar加密依赖在pom.xml文件配置XJar加密依赖点击查看代码<!--反编译依赖类--><pluginRepositories><pluginRepository><id>jitpack.io</id><url>https://jitpack.io</url></pluginRepository></pluginRepo......
  • 本地扫描maven项目依赖jar的license信息
    添加plugin<plugin><groupId>org.codehaus.mojo</groupId><artifactId>license-maven-plugin</artifactId><version>2.4.0</version><configuration><!--指定输出内容的模版,......
  • 基于Java的厦门旅游电子商务预订系统(Vue.js+SpringBoot)
    目录一、摘要1.1项目介绍1.2项目录屏二、功能模块2.1景点类型模块2.2景点档案模块2.3酒店管理模块2.4美食管理模块三、系统设计3.1用例设计3.2数据库设计3.2.1学生表3.2.2学生表3.2.3学生表3.2.4学生表四、系统展示五、核心代码5.1新增景点类型5.2查......
  • Java学习系列(三):数组
    一、数组的基本概念及作用数组:是一组相同数据类型元素的集合,是一个容器①数组可以存储基本数据类型,也可以存储引用数据类型②数组创建时必须指定长度,且长度不可变③数组中每个元素空间是连续的声明数组格式:数据类型[]数组名字例如:int[]a;数据类型数组的名字[]......