PrintStream是写入一串8bit的数据的,PrintWriter是写入一串16bit的数据的。String缺省是用UNICODE编码,是16bit的。...PrintWriter实现了Writer的所有print方法。...对于PrintWriter,所有println方法也都在内部调用print方法,然后再调用一个没有参数的println()来换行,print方法调用write方法。...这样,虽然使用System.out输出不会产生问题,在程序中创建新的PrintStream对象时却会产生编译时的警告。...下面我们先来看看PrintStream(字节流)的打印实例: PrintWriter(字符流)打印实例:
打印流 字符打印流(针对文本进行操作:PrintWriter) 字节打印流(PrintStream 和标准输出流有关系 System.out;) PrintWriter...:属于输出流 1)只能写数据(只能针对目的地文件进行操作),不能读数据(不能针对源文件进行操作) 2)可以针对文件直接进行操作 如果一个类中的构造方法里面有File对象或者String类型数据...4)打印的方法:print(XXX x)/println(XXX xx) 构造方法 PrintWriter(File file) 使用指定文件创建不具有自动行刷新的新 PrintWriter...pw.txt文件打印内容 pw.flush(); //本身在构造的时候,就可以启动自动刷新 //关闭流 pw.close(); } public...PrintWriter(Writer out,boolean autoFlush) 创建新 PrintWriter。
特点:只负责输出数据,不负责读取数据,且有自己的特有方法 2.1 字节打印流(PrintStream) PrintStream(String fileName):使用指定的文件名创建新的打印流 使用继承父类...(OutputStream)的方法(write方法)写数据,查看的时候会转码;使用自己特有的方法写数据,查看的数据原样输出 2.2 字符打印流(PrintWriter) 继承父类:Writer,即可以调用父类的方法...(Writer()方法重载:5个) 常用构造方法(两个) PrintWriter(String fileName):使用指定的文件名创建一个新的PrintWriter,而不需要自动执行刷新 PrintWriter...三、字符缓冲流 & 集合 1、集合到文件 需求:把ArrayList集合中的字符数据写入到文本文件。...(); bw.flush() 8)释放资源 bw.close() 2、文件到集合 需求:将文本文件中的数据读取到集合中,并遍历集合。
本文将详细介绍Java字符打印流的用法,以及如何在实际编程中充分利用它。 什么是字符打印流? 字符打印流是Java I/O库中的一部分,它是用来处理字符数据输出的工具。...与字节输出流不同,字符打印流专门用于输出字符数据,它可以将字符写入文件、控制台或其他输出目标,而不需要我们手动进行字符编码的工作。 字符打印流通常用于处理文本文件,如文本文档、配置文件、日志文件等。...它们是Writer的子类,提供了一些方便的方法来输出字符数据。 Java字符打印流的主要类 在Java中,有两个主要的字符打印流类:PrintWriter和PrintStream。...它们的功能类似,但PrintWriter用于处理字符数据,而PrintStream用于处理字节数据。在本文中,我们将重点介绍PrintWriter。...通过使用PrintWriter,您可以轻松地将字符数据写入文件、控制台或其他输出目标。 希望本文能够帮助您更好地理解和使用Java字符打印流,使您在处理字符输出时更加高效。
,控制台 System.in: 对应的是标准输出设备,键盘 练习: 通过键盘录入,当输入一行数据后将改行数据进行打印,如果录入的数据是over,那么停止录入....可以利用这两个已关联的流进行相关操作 打印流 PrintStream和PrintWriter 该流提供了打印方法,可以将各种类型的数据原样打印....PrintStream 打印的所有字符都使用平台的默认字符编码转换为字节。在需要写入字符而不是写入字节的情况下,应该使用 PrintWriter 类。...= null) { // 这样写比用BufferedWriter更简洁.PrintWriter更适合打印各种数据....= 42L; 这样生成新的类不会改变UID,而不是使用系统生成的UID.
文本输入与输出---保存数据时,可以选择二进制或文本格式。整数1234存储成二进制时,写成由字节00 00 04 D2构成的序列(十六进制表示法。)存储文本格式时,被存成字符串"1234"。...InputStreamReader类将包含字节(用某种字符编码方式表示的字符)的输入流转换为可以产生Unicode码元的读入器。将一个输入读入器从控制台读入键盘敲击信息,并将其转换为Unicode。...(System.in, StandardCharsets.UTF_8);如何写出文本输出PrintWriter:拥有以文本格式打印字符串和数字的方法。...如果写出器设置为自动冲刷模式,那么只要println被调用,缓冲区的所有字符都被发送到它们的目的地(打印写出器总是带缓冲区的)。...但是Unicode标准允许这样做,甚至认为这是一种好的做法,因为这种可以使编码机制不留疑惑。Java并没有这样做。最好的做法是将输入中发现所有先导的\uFEFF都剥离掉。
:"); // 键盘录入选择,根据选择做不同的操作 Scanner sc = new Scanner(System.in); // 为了后面的录入信息的方便,我所有的数据录入全部用字符接收 String...java.io.PrintWriter; /* * 打印流 * 字节流打印流 PrintStream * 字符打印流 PrintWriter * * 打印流的特点: * A:只有写数据的...,没有读取数据。...只能操作目的地,不能操作数据源。 * B:可以操作任意类型的数据。 * C:如果启动了自动刷新,能够自动刷新。 * D:该流是可以直接操作文本文件的。...* 哪些流对象是可以直接操作文本文件的呢?
我们给它的参数是一个新的FileWriter对象,它本身是用文件名作为参数创建的。 可以只使用FileWriter对象而不使用任何 PrintWriter 来写入文本文件。...(这个值已经在其中了,所以这段代码没有任何用处。) 在第 12 行,我们打印出数组中所有三个当前值,这样你就可以看到它们都是零。 在第 15 到 17 行,我们将随机数放入数组的每个槽中。...在第 16 行,我们创建了一个与输入文本文件的互联网地址连接的 Scanner 对象。 您注意到我在顶部没有导入java.net.URL吗? 只有在您想要能够输入类名的简短版本时,才需要导入类。...当我们从文本文件中读取数据时,很多时候我们事先不知道它的长度。在最低温度练习中,我向你展示了一个处理这个问题的技巧:将项目数量存储为文件的第一行。...但更常见的技术是我在这里使用的:只需使用一个循环,直到我们到达文件的末尾。 Scanner 对象的.hasNext()方法将在尚未读取的数据时返回true。如果没有更多数据,则返回false。
(掌握) (1)字节打印流,字符打印流 (2)特点: A:只操作目的地,不操作数据源 B:可以操作任意类型的数据 C:如果启用了自动刷新,在调用println()方法的时候,能够换行并刷新 D:可以直接操作文件...让被序列化的对象所属类实现序列化接口。 (java.io.Serializable) 该接口是一个标记接口。没有功能需要实现。 (3)注意问题: 把数据写到文件后,在去修改类会产生一个问题。...public String getProperty(String key) //获取所有的键的集合 public Set stringPropertyNames() (3)和IO流结合的方法...//把键值对形式的文本文件内容加载到集合中 //把文件中的数据读取到集合中 public void load(Reader reader) //把集合中的数据存储到文件 public void load...但是大部分我们看到的还是以前的IO (2)JDK7的NIO的使用 Path:路径 Paths:通过静态方法返回一个路径 Files:提供了常见的功能 复制文本文件 把集合中的数据写到文本文件
此类实现在 PrintStream 中的所有 print 方法。它不包含用于写入原始字节的方法,对于这些字节,程序应该使用未编码的字节流进行写入。...PrintWriter(File file, String csn) 创建具有指定文件和字符集且不带自动刷行新的新 PrintWriter。...PrintWriter(Writer out) 创建不带自动行刷新的新 PrintWriter。...,PrintWriter类对象的write()、print()、append()方法实现最后结果相同,只是在调用的时候其返回值有所不同,可根据需要进行灵活的选择,其他没有看出有什么不同。...(这个结论通过查询jdk api文档和程序测试得来的)。另一个注意:一般I/O流的输入方和输出方的类是成对出现的,但是PrintWriter不是,并没有与之对应的类。
序列化为将对象的信息存储到文件中,反序列化为将文件存储的对象信息读取出来....只负责输出数据,使它们能够方便地打印各种数据值表示形式....打印流的分类 PrintStream PrintWriter 打印流的特点 不负责数据源,只负责数据目的(只提供输操作) 永远不会抛出IOException,但是可能抛出别的异常 两个打印流的方法,完全一致...构造方法,就是打印流的输出目的端 PrintStream构造方法 : 接收File类型,接收字符串文件名,接收字节输出流OutputStream PrintWriter构造方法 : 接收File类型,..."love"); pw.println("java"); pw.close(); } 打印流复制文本文件
3:打印流(掌握) (1)字节打印流,字符打印流 (2)特点: A:只操作目的地,不操作数据源 B:可以操作任意类型的数据 C:如果启用了自动刷新...区别无非一个是字节打印流,一个是字符打印流。更多的应用会在以后详细扩展。 需要注意: 字节打印流还是标准输出流的对象哦。...未实现此接口的类将无法使其任何状态序列化或反序列化。 * 该接口居然没有任何方法,类似于这种没有方法的接口被称为标记接口。...对象 -- 流数据(ObjectOutputStream) * 反序列化流:把文本文件中的流对象数据或者网络中的流对象数据还原成对象。...复制文本文件 把集合中的数据写到文本文件 代码示例:新型复制: /* * nio包在JDK4出现,提供了IO流的操作效率。
打印流提供了非常方便的打印功能,可以打印任何的数据类型,例如:小数、整数、字符串等等,相对于前面学习的几个文件的操作来说,这里的打印流是最简便的一个类了 PrintStream 主要功能是格式化的将内容写入文件...,%f了,只需要都是用%s即可,这个很像python PrintStream 打印的所有字符都使用平台的默认字符编码转换为字节。...在需要写入字符而不是写入字节的情况下,应该使用 PrintWriter类。 构造函数 PrintStream(File file) 创建具有指定文件且不带自动行刷新的新打印流。...PrintStream(OutputStream out) 创建新的打印流。...print() 打印常用的数据类型,比如String,char,int ,double,float,boolean,long,short println() 打印常用的数据类型,但是带有换行符
FileOutputStream(写) 使用步骤: ① 创建字节输出流对象 参数:字符串表示的路径/File对象 文件不存在,或自动创建一个新的,但需要保证父级路径存在 如果文件已经存在,会被覆盖 ②写数据...字符流 字符流: 字符流 : 字节流 + 字符集 特点 输入流:一次读一个字节,遇到中文,一次读多个字节 输出流:底层会把数据按照指定的编码方式进行编码,变成字节再写入文件 适用于:对纯文本文件进行读写操作...打印流 打印流: 打印流 字节打印流PrintStream 字符打印流PrintWriter 字节打印流-PrintStream 构造方法(获取字节打印流对象): public...public void printf(String format,Object... args):特有方法:带有占位符地打印语句,不换行 字节流底层没有缓冲区,是否开启自动刷新都没有任何变化...字符打印流-PrintWriter 方法使用参考上述地字节打印流(构造方法名PrintStream 换成 PrintWriter即可、成员方法名及使用方法一致) 特点: 打印流仅操作文件目的地
上节我们介绍了如何以字节流的方式处理文件,我们提到,对于文本文件,字节流没有编码的概念,不能按行处理,使用不太方便,更适合的是使用字符流,本节就来介绍字符流。...为了确保读到所有内容,可以借助待会介绍的CharArrayWriter或StringWriter。...,这个数组的长度可以根据数据内容动态扩展。...CharArrayWriter有如下方法,可以方便的将数据转换为char数组或字符串: public char[] toCharArray() public String toString() 使用CharArrayWriter...,我们可以改进上面的读文件代码,确保将所有文件内容读入: Reader reader = new InputStreamReader( new FileInputStream("hello.txt
字符打印流:PrintWriter 是字符类型的打印输出流,它继承于Writer,实现在PrintStream中的所有 与PrintStream类不同。...PrintWriter(File file, String csn) 使用指定的文件和字符集创建一个没有自动行刷新的新PrintWriter。...PrintWriter(OutputStream out) 从现有的OutputStream创建一个没有自动行刷新的新PrintWriter。...PrintWriter(Writer out) 创建一个新的PrintWriter,没有自动行刷新。...PrintWriter(String fileName) 使用指定的文件名创建一个没有自动行刷新的新PrintWriter。
PrintWriter的工作方式 与其他写入器不同,PrintWriter将原始数据(int、float、char等)转换为文本格式。然后它将格式化的数据写入到写入器。...这意味着,如果调用println()或printf()方法之一,它将强制写入器将所有数据写入目标。...autoFlush); 这里,我们已经创建了一个将数据写入指定文件的打印写入器 autoFlush是一个可选的布尔参数,指定是否执行自动冲洗 注意:在上述所有情况下,PrintWriter使用某些默认字符编码将数据写入文件...PrintWriter的方法 PrintWriter类提供了各种方法,使我们可以将数据打印到输出中。...print()方法print() – 将指定的数据打印到写入器 println() – 将数据与末尾的新行字符一起打印到写入器 示例 import java.io.PrintWriter; class
背景 最近有个学弟找到我,跟我描述了以下场景: 他们公司内部管理系统上有很多报表,报表数据都有分页显示,浏览的时候速度还可以。...所以他想问我的问题是:有没有什么办法可以从根本上解决这个问题。...csv其实是文本文件,用excel打开会丢失格式和精度。这解决不了问题啊,我们要excel格式啊!!...这样子的下载效率,应该可以满足大部分公司的报表导出需求吧。 最后 学弟拿到我的示例代码后,经过一个礼拜的修改后,上线了页面导出的新版本,所有的报表提交异步作业,大家统一到下载中心去进行查看和下载文件。...我的回答是: 1.文本文件流写入比较快 2.excel文件格式好像不支持流持续写入,反正我是没有试成功过。
(3)PrintStream:打印流,可将各种类型的数据原样打印,有自动刷新功能 **构造方法: PrintStream(String fileName) 创建具有指定文件名称且不带自动行刷新的新打印流...PrintStream(File file) 创建具有指定文件且不带自动行刷新的新打印流。 PrintStream(OutputStream out) 创建新的打印流。...(4)PrintWriter: **构造方法: PrintWriter(String fileName) 创建具有指定文件名称且不带自动行刷新的新 PrintWriter。...PrintWriter(File file) 使用指定文件创建不具有自动行刷新的新 PrintWriter。...PrintWriter(Writer out) 创建不带自动行刷新的新 PrintWriter。
领取专属 10元无门槛券
手把手带您无忧上云