首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java IO 分类、使用场景、缓冲流、使用例子、文件拷贝

1.1、流特点: 先进先出:最先写入输出流数据最先被输入流读取到。 顺序存取:可以一个一个地往流写入一串字节,读出也将按写入顺序读取一串字节,不能随机访问中间数据。...,读写单位是byte,InputStream/OutputStream单向流动 字符流:每次读取(写出)两个字节,有中文使用该流就可以正确传输显示中文,读写单位是char,Reader/Writer...但是编码不同,中文字符字节数不一样,而在UTF-8编码一个中文字符是3个字节。 如果统一使用字节流处理中文,因为读写是一个字节一个字节,这样就会对中文字符有影响,就会出现乱码。...Java使用IO 读取文件,会进入核心态,调用驱动进行IO,本身就会缓存在系统级别的,当你第二次读取,会由用户态进入核心态,读取系统缓存。...举个很形象例子加深理解: 从黄桶(读)通过水泵(管道)把水抽到绿桶(写),水管就相当于缓冲区,当我看到黄桶水没有了,立马关了水泵,但发现水管里还有水没有流到绿桶,这些残留水就相当于内存丢失数据

1.4K51

Java-IO流

(byte[] b, int off, int len) //将 len字节从位于偏移量off 指定字节数组写入文件输出流 例子1:请使用 FileOutputStream a.txt 文件写入...例子:使用 FileWriter 将 “Hello,World” 写入到 hello.txt 文件 import java.io.FileWriter; import java.io.IOException...Dog(“小黄”,3) 这个 dog 对象保存到文件,并且能够从文件恢复 3.上面的要求,就是能够将基本数据类型或者对象进行序列化反序列化操作 序列化反序列化 序列化就是保存数据,保存数据值和数据类型...反序列化就是恢复数据,恢复数据值和数据类型 需要让某个对象支持序列化机制,则必须其类是可序列化,为了某个类是可序列化,该类必须实现如下两个接口之一: Serializable //这是一个标记接口...,idea,保存信息到配置文件,如果含有中文,会存储为unicode码 第一个参数为 OutputStream/Writer 用来指向加载配置文件 第二个参数为 String 用来给配置文件添加注释

62830
您找到你想要的搜索结果了吗?
是的
没有找到

Java进阶-IO(2)

字符流=字节流+编码表(即字符底层还是字节流) 2)问题:用字节流复制文本文件,文本文件也有中文,但是不会出现编码问题原因?如何识别是中文? 最终底层操作会自动进行字节拼接成中文。...识别中文:汉字存储无论选择哪种编码存储,第一个字节都是负数。...FileWriter(File file,boolean append):指定 File 对象情况下构造一个 FileWriter 对象,如果 append 值为 true,则将字节写入文件末尾,...FileWriter(String fileName):指定文件情况下构造一个 FileWriter 对象。其中,fileName 表示要写入字符文件名,表示是完整路径。...FileWriter(String fileName,boolean append):指定文件名以及要写入文件位置情况下构造 FileWriter 对象。

16311

第二十二天 IO-高效流(缓冲流)&转换流【悟空教程】

第二十二天 IO-高效流(缓冲流)&转换流【悟空教程】 第22天 IO 第1章 高效流 1.1 高效流 (缓冲流) 我们学习字节流与字符时候,大家都进行过读取文件数据操作,读取数据量大文件...BufferedReader 1.5.1 基本用法 BufferedWriter:将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组字符高效写入。...FileWriterFileReader:作为子类,仅作为操作字符文件便捷类存在。当操作字符文件使用是默认编码表可以不用父类,而直接用子类就完成操作了,简化了代码。...字符: 当我们将字符串转为对应数字字节时,需要指定码表,则存储了为该字符该码表对应数字字节,如果使用了其他码表重写翻译回字符串,则拼写字符串会乱码。...文件 使用一次读一个字符方式一次读一个缓冲数组方式分别测试,复制此文件内容 关闭流 运行代码,查看目的文件 4.1.3 知识点:字节缓冲流:BufferedOutputStreamBufferedInputStream

1.2K30

Java IO学习笔记八

参考文章 BufferedReaderBufferedWriter 这两个类是高效率提高文件读取速度,它们为字符输入输出提供了一个缓冲区,可以显著调高写入读取速度,特别针对大量磁盘文件读取时候...() newLine() 写入一个与平台相关换行符 write(int data) 写入一个字符,这里写入不是整数 write(String str) 写入一个字符串 write(String...(); //写入一个平台自带换行符,因为每一个操作系统换行符都不一样 bufferedWriter.write(data); //写入并不是整数,而是这个整数所代表字符 bufferedWriter.newLine...年龄:%s,grade:%s",name,age,grade); //格式化写入 printWriter.close(); 综合实例 将一个文件数据转移到另外一个文件 package IO...test.txt一行数据 bufferedWriter.write(str); //将这一行数据写入文件demo.txt bufferedWriter.newLine

35420

java IO流之BufferedReaderBufferedWriter

大家一起学习,一起进步 如果感觉博主文章还不错的话,点赞 + 关注 + 收藏 BufferedReaderBufferedWriter 一、简介: 二、使用BufferedReader案列...BufferedReader 中文乱码解决方案解决方案; 三、BufferedWriter使用案例 一、简介: BufferedReader 用于加快读取字符速度, BufferedWriter...用于加快写入速度 BufferedReader BufferedWriter 类各拥有 8192 个字符缓冲区。...属于字符流,按照字符读取数据 二、使用BufferedReader案列 1.使用它读取文本文件,并显示控制台 步骤; 1.创建读取文件 2.创建BufferedReader 3.读取...//文件写入路径 String filePath="f:\\xbfinal.txt"; //准备写入内容 BufferedWriter buf=new BufferedWriter(

48710

Java IO流笔记

要写出字符流,需要使用 FileWriter OutputStream: void write(int b) 将指定字节写入此输出流。 write常规协定是:向输出流写入一个字节。...要写入字符包含在给定整数16个低位,16高位被忽略。即写入0到65535之间 Unicode码。...如果流使用构造器是:FileWriter(file,true) 不会对原有文件覆盖,而是原有文件基础上追加内容。 读取文件,必须保证文件存在,否则会报异常。...当使用BufferedInputStream读取字节文件,BufferedInputStream会一次性从文件读取8192个(8Kb),存在缓冲区,直到缓冲区装满了,才重新从文件读取下一个8192...说明:文件编码方式(比如:GBK),决定了解析使用字符集(也只能是GBK)。

89920

从IO到字符流:Java Writer是如何提高文件读写效率

前言  Java程序开发,我们经常需要将数据输出到文件或者网络,Writer类就是Java一种输出字符流,它可以将字符按照一定编码方式(如UTF-8、GBK)输出到文件或者网络。...Writer类简介  JavaWriter类是一个抽象类,它是所有字符输出流基类。它提供了写入字符通用方法,包括写入单个字符字符数组、字符串、换行符等。...append():添加字符字符串到输出流使用Writer类,一般需要创建一个子类来实现具体写操作,例如FileWriter、CharArrayWriter等。...例如,BufferedWriter类允许您以缓冲方式写入字符,从而提高性能。CharArrayWriter类允许您将字符写入字符数组,而不是写入文件或管道。...希望读者通过本文介绍,能够更好地了解应用Writer类。总结  Writer类是Java中用于输出字符一个抽象类,它提供了丰富方法,支持多种编码方式,可以使用不同子类来实现不同输出。

32321

JAVA入门学习八

并将该异常名称,异常信息以及异常出现位置打印了控制台上,同时将程序停止运行 编译期异常运行期异常区别: Java异常被分为两大类:编译异常运行时异常。...定义功能方法,需要把出现问题暴露出来调用者去处理,那么就通过throws方法上标识。...: 根据一个目录一个文件/目录得到File对象 * File(File parent, String child): 根据一个父File对象一个文件/目录得到File对象 #创建功能 * public...//demo.txt内容 和我祖国一刻也不能分割! b爱您,祖国! 注意事项: 1.什么情况下使用字符流?什么情况下使用字节流? 字符流也可以拷贝文本文件但不推荐使用....转换原理 学习总结: 1.用BufferedReader读取GBK码表UTF-8码表字符 2.用BufferedWriter写出字符到GBK码表UTF-8码表文件

63910

十五、IO流【黑马JavaSE笔记】(本文文中记录了个人学习感受)

) 需求:把文件fos.txt内容读出来控制台输出 FileInputStream:从文件系统文件获取输入字节 FileInputStream(String name) :通过打开与实际文件连接来创建一个...3个字节 GBK中文占2个字节) 用字节流复制文本文件,文本文件也会有中文,但是没问题,原因是最终底层操作会自动进行字节拼接成中文,如何识别中文呢?...int i1 = sc.nextInt(); } } (ps:当我学到这里,感觉整个人精神了,当这一节出现System.in就在想,这个东西跟InputStream什么乱七八糟有什么关系...太想记录此刻心情了哈哈,这些都是笔记,未来可能会有写博客习惯,然后将笔记一点点分享到博客,期待未来粉丝们嘿嘿,继续学习了,加油!)...或者在网路传输对象 这种机制就是使用一个字节序列表示一个对象,该字节序列包含:对象模型、对象数据对象存储属性等信息 字节序列写到文件之后,相当于文件持久保存了一个对象信息 反之,该字节序列还可以从文件读取回来

43510

Java IO学习(附实例详解)

字符字节流主要区别: 1.字节流读取时候,读到一个字节就返回一个字节; 字符使用了字节流读到一个或多个字节(中文对应字节数是两个,UTF-8码表是3个字节)。...3.实际上字节流在操作本身不会用到缓冲区(内存),是文件本身直接操作,而字符流在操作使用了缓冲区,通过缓冲区再操作文件。 下面我们以文件操作作为实例进一步了解。...Java采用16位Unicode来表示字符字符写入字符我们都可以指定写入字符编码。 这里博主贴出字符流类图结构,方便猿友阅读: ?...文件操作时候我们主要使用到FileReaderFileWriter或BufferedReaderBufferedWriter。...FileWriter常用方法包括以下几种: (1)void writer(int c):向文件写入整数c代表单个字符

41720

IO流你了解多少

一个数据传输通道,如果既要写入数据,又要读取数据,则要分别提供两个流。...就是遇到中文字符,可能不会显示完整字符,那是因为一个中文字符可能占用多个字节存储。所以 Java 提供一些字符流类,以字符为单位读写数据,专门用于处理文本文件。...小贴士:字符流,只能操作文本文件,不能操作图片,视频等非文本文件当我们单纯读或者写文本文件 使用字符流 其他情况使用字节流。...# 4.4.4 FileWriter 类 java.io.FileWriter 类是写出字符文件便利类。构造使用系统默认字符编码默认字节缓冲区。...字符 (Character) 计算机中使用字母、数字、字符号,比如’A’、‘B’、’$’、’&' 等。 一般英文状态下一个字母或字符占用一个字节,一个汉字用两个字节表示。

23120

JavaIO BufferedReaderBufferedWriter介绍实例

当BufferedReader在读取文本文件,会先尽量从文件读入字符数据并放满缓冲区,而之后若使用read()方法,会先从缓冲区中进行读取。...如果缓冲区数据不足,才会再从文件读取,使用BufferedWriter写入数据并不会先输出到目的地,而是先存储至缓冲区。如果缓冲区数据满了,才会一次对目的地进行写出。...writer=new BufferedWriter(new FileWriter("静夜思.txt")); char ch='床'; //写入一个字符 writer.write...这是因为我们每次都在读到字符串后面写一个换行符。 解决办法:在读到字符串前面写换行符,这样出现新问题,就是文件开头多出了一个空行,所以加入控制语句,第一行不写入换行符,第二行后再写。...来复制文件好处就是可以指定复制文件时候使用字符编码,例如上面的复制操作,从gbk编码文件读取,然后写入到utf8编码文件中去。

49130

第54节:Java当中IO流()

,就是获取目录文件,使用递归方法,通过过滤器找到指定所有文件....-> java.io.FileWriter FileWriter此类构造方法是假定默认字符编码默认字节缓冲区大小,FileWriter是用于写入字符FileWriter(File file...为关闭此流,关闭流之前要先刷新,关闭资源用,关闭前会将缓冲区里数据刷新到目的地,然后关闭流,关闭了就不可以使用了. public void close(){ flush(); } // 简书作者...是用来指定编码读取中文,是字节流通向字符桥梁 FileWriterFileReader是OutputStreamWriterInputStreamReader子类,只是用来操作字符文件便捷类...如果要使用其他编码,要使用字符转换流,反之操作文件,且用默认编码,就使用FileWriterFileReader.

56930

Java文件操作类效率对比

前言 众所周知,Java中有多种针对文件操作类,以面向字节流字符流可分为两大类,这里以写入为例: 面向字节流:FileOutputStream  BufferedOutputStream 面向字符...(每行内容均为“写入文件Data\n”),比较其耗费时间 横向比较:对于同一个文件操作类,比较写入不同行数内容情况下所耗费时间;本文以2次方指数级增长行数 1 import java.io.File...可以看出,这4个类,BufferWriterNewBufferedWriter所耗费时间更少,但总体差别不是很大。 让我们再来看看,写入26W行数据以下情况: ?  ..."如果传入参数是多个时候,我们就需要把它们封装成一个Map了,当然单参数也可以封装成map,实际上如果你传入参数时候,breast里面也是会把它封装成一个Map,mapkey就是参数名,所以这个时候...至于为什么小数据量情况下FileWriter快很多,目前认为是一次操作两个字节所致(有了缓存之后就差不多了)。 参考 Java IO流学习总结

1.1K40

【Java 基础篇】自如应对文本数据:Java缓冲字符流详解

现在让我们深入了解如何使用缓冲字符流来处理文本文件。 为什么需要缓冲字符流? 在读写文本文件,每次读取或写入一个字符可能涉及到磁盘或网络I/O操作,这是相对较慢。...综上所述,缓冲字符流具有高效、便捷安全特点,因此处理文本文件使用缓冲字符流是一种明智选择。 如何创建和使用缓冲字符流?...字符缓冲流更多用法 当涉及到更高级缓冲字符流操作,有一些技巧方法可以派上用场,文件处理任务更灵活高效。以下是一些高级操作示例: 1....使用FileReaderFileWriter 如果您需要以字符形式读取或写入文件,可以使用FileReaderFileWriter,它们不带缓冲区,适合处理较小文件。...希望这篇博客能帮助您更好地理解使用Java缓冲字符流,文本文件处理变得更加高效便捷。

20330

Java当中IO流()

. // Java char c = 'a'; 无论什么都是两个字节 字符流FileReader 解码编码 字符串 构造方法 方法说明String()是初始化一个String对象,表示一个字符序列...-> java.io.FileWriter FileWriter此类构造方法是假定默认字符编码默认字节缓冲区大小,FileWriter是用于写入字符FileWriter(File file...为关闭此流,关闭流之前要先刷新,关闭资源用,关闭前会将缓冲区里数据刷新到目的地,然后关闭流,关闭了就不可以使用了. public void close(){ flush(); } // 简书作者...是用来指定编码读取中文,是字节流通向字符桥梁 FileWriterFileReader是OutputStreamWriterInputStreamReader子类,只是用来操作字符文件便捷类...如果要使用其他编码,要使用字符转换流,反之操作文件,且用默认编码,就使用FileWriterFileReader.

79320

18. 基础IO(2)——IO流

字节流,字符流基本概念 File类不支持文件内容处理,如果要处理文件内容,必须要通过流操作模式来完成 java.io包,流分为两种:字节流与字符流 字节流:读写数据以字节为基本单位(处理二进制文件.../数据时候使用字符流:独写数据以字符为基本单位(处理文本文档/数据时候使用) 2....答:当我们用read()读取文件,每读一个字节,访问一次磁盘,效率很低 。文件过大,操作起来也不是很方便。因此我们需要用到buffer缓存流,当创建buffer对象,会创建一个缓冲区数组。...当我们读一个文件,先从磁盘读到缓冲区,然后直接从缓冲区输出即可,效率会更高 实例:复制图片 1)初版 public class IODemo3 { public static void...字符流 1)Reader:(输入)把输入设备读取到内存 2)Writer:(输出)把内存数据写入到输出设备 字符流与字节流用法基本一致,一个典型区别是: 字节流读写操作以byte为单位,

38610

Java基础17:Java IO流总结

更具体地说,我会根据类用途对类进行分组。这个分组将会使你未来工作,进行类用途判定时,或者是为某个特定用途选择类变得更加容易。 输入输出 术语“输入”“输出”有时候会有一点人疑惑。...就个人而言,第一天学习Java IO时候就感觉到了一丝疑惑。 为了消除这个疑惑,试着给输入输出起一些不一样别名,它们从概念上与数据来源和数据流向相联系。...IO文件 Java应用程序文件是一种常用数据源或者存储数据媒介。所以这一小节将会对Java中文件使用一个简短概述。...这两个类允许你从文件开始到文件末尾一次读取一个字节或者字符,或者将读取到字节写入到字节数组或者字符数组。你不必一次性读取整个文件,相反你可以按顺序地读取文件字节字符。...你可以一次写入一个字节或者字符文件,也可以直接写入一个字节数组或者字符数据。数据按照写入顺序存储文件当中。

97600
领券