网上有不少大牛做了一些比较高级的,例如重写stream类,加入多个输出流。 但其实很多时候我们没必要用到这么复杂。...例如我的应用,我只是想把错误信息输出到网页的同时,简单加几句话,可以把网页上的信息也写一份到数据库或者文本。 之前使用了重定向System.out的做法。...之前都没试过这样用~~~ 首先定义一个内存输出流: ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();...,就再建立一个PrintStream对象(例如封装FileOutputStream),使用print方法,把byteArrayOutputStream输出。... <% try { //全部内容先写到内存,然后分别从两个输出流再输出到页面和文件
unicode编码(双字节编码)文件是byte byte byte ...的数据序列文本文件是文本(char)序列按照某种编码方案(utf-8,utf-16be,gbk)序列化为byte的存储结果 字符流(...Reader Writer)—->操作的是文本文本文件 123456 字符的处理,一次处理一个字符字符的底层任然是基本的字节序列字符流的基本实现 InputStreamReader 完成byte...流解析为char流,按照编码解析 OutputStreamWriter 提供char流到byte流,按照编码处理 FileReader/FileWriter 字符流的过滤器 123456789101112131415161718192021...e.printStackTrace(); }finally { fis.close(); osw.close(); } } 字节字符读写流
会把输出的内容写入 writer 的缓冲区中 out.flush(); // 最后一次的输出,由于没有手动 flush,会在整个页面输出到客户端的时候,自动写入到 writer 缓冲区 out.write...("这是 out 的第二次输出"); // writer 的输出 response.getWriter().write("这是 writer 的第一次输出"); response.getWriter...会把输出的内容写入 writer 的缓冲区中 最后一次的输出,由于没有手动 flush,会在整个页面输出到客户端的时候,自动写入到 writer缓冲区 2) 图解 out 流和 writer...流的两个缓冲区如何工作 <% // out 输出 out.write("这是 out 的第一次输出"); // out flush 之后。...会把输出的内容写入 writer 的缓冲区中 out.flush(); // 最后一次的输出,由于没有手动 flush,会在整个页面输出到客户端的时候,自动写入到 writer 缓冲区 out.write
文章目录 一、C++ 输入输出流 I/O 流概念 1、输入 和 输出 概念 2、输入 和 输出 类型 3、输入 和 输出 流继承结构 4、输入 和 输出 流相关头文件 5、iostream 头文件中的...输入 / 输出 流 一、C++ 输入输出流 I/O 流概念 1、输入 和 输出 概念 输入 和 输出 概念 : 应用程序 的 输入 : 指的是 从 外部输入 将数据 传输给 应用程序 ; 应用程序 的...fstream : 文件输入 / 输出流 ; 导入 头文件 ; 输入和输出 的 目标 是 内存空间 : 字符串输入输出 , 又称为 串I/O ; 将 字符数组作为 存储空间 , 输入...就是从 字符数组 中读取数据 , 输出就是 写出数据到 字符数组 ; istrstream : 字符串输入流 ; 导入 头文件 ; ostrstream : 字符串输出流...; 导入 头文件 ; strstream : 字符串输入 / 输出流 ; 导入 头文件 ; 3、输入 和 输出 流继承结构 输入 / 输出 流 的继承结构
IO流分为输入流、输出流 输入输出流 又分为字节流、字符流 字节流 InputStream:抽象了应用程序读取数据的方式 OutputStream:抽象了应用程序写 出数据的方式 EOF = End...buf) 读取数据填充到字节数组buf in.read(byte[] buf,int start, int size)读取数据到字节数组buf从buf的start位置开始存放size长度分数据 输出流的基本方法...out.write(int b) //写出一个byte到流,b的低8位 out.write(byte[] buf) //将buf字节数组都写到流 out.write(byte[] buf, int start...> 使用原生缓冲的流 > 不使用缓冲的流1 2 3 4//计算时延 long start=System.currentTimeMillis(); long end=System.currentTimeMillis...最后关闭IO流和文件流应该在finally中关闭,否则IO异常时执行不到close语句,IO流仍然没有关闭。 |:----|:----|
例如:上传文件和下载文件 Java对数据的操作是通过流的方式 Java用于操作流的对象都在IO包中 2、IO流分类 按照数据流向 输入流 读入数据 输出流 写出数据 按照数据类型 字节流 字符流...int b) public void write(byte[] b) public void write(byte[] b,int off,int len) 案例一: /* 步骤: A:创建字节输出流对象...fos = new FileOutputStream("fos.txt"); /* * 创建字节输出流对象了做了几件事情?...//写数据 fos.write("hello,IO".getBytes()); fos.write("java".getBytes()); //释放资源 //关闭此文件输出流并释放与此流有关的所有系统资源...r\n linux:\n Mac:\r */ public static void main(String[] args) throws IOException { // 创建字节输出流对象
parent, String child) 从父路径名字符串和子路径名字符串创建新实例 File(File parent, String child) 从父抽象路径名和子路径名字符串创建新实例 import...Java 中,数据的输入和输出都是以流的形式来进行的。根据数据流方向的不同,我们可以将其分为:输入流、输出流。而根据处理的数据单位不同,可分为:字节流、字符流。...两者的关系可以描述为下表: 字节流 字符流 输入流 InputStream Reader 输出流 OutputStream Writer 而对于字节流和字符流的选用原则,我们建议遵循如下规则:如果数据能够通过...FileOutputStream,就是从内存中读取数据,然后将数据从内存存放到文件中,常用方法如下: 返回值 方法 描述 void write(byte[] b) 将 b.length 个字节从指定字节数组写入此文件输出流...void close() 关闭文件输出流并释放相关资源 import java.io.*; /** * @author : cunyu * @version : 1.0 * @className
这样就与流的知识衔接起来了。...标准输出流 public class PrintStreamextends FilterOutputStreamimplements Appendable, Closeable PrintStream...为其他输出流添加了功能,使它们能够方便地打印各种数据值表示形式。...与其他输出流不同,PrintStream 永远不会抛出 IOException;而是,异常情况仅设置可通过 checkError 方法测试的内部标志。...//标准输出流 PrintStream out = System.out; out.print("hello");//输出在控制台 但是你其实也可以向文件中进行输出,也就是将数据输入到文件中
TestBufferedOutputStream { public static void main(String[] args) throws Exception { //创建缓冲字节输出流...bos.flush(); } //关闭:默认刷新,并关闭节点流 bos.close(); } } 2.输出结果 ?
; 字节流:字节输入流 InputStream 字节输出流 OutputStream字节符:字符输入流 Reader字符输出流 Writer 一切皆为字节。...java.io.OutputStream:字节输出流 此抽象类是表示输出字节流的所有类的超类; 定义了一些子类共性的成员方法 void close():关闭此输出流并释放与此流有关的所有系统资源 void...flush():刷新此输出流并强制写出所有缓冲的输出字节 void write(byte[] b):将 b.length 个字节从指定的 byte 数组写入此输出流。...abstract void write(int b):将指定的字节写入此输出流 FileOutputStream extends OutputStream 文件字节输出流 作用:把内存中的数据写入到硬盘的文件中...; 构造方法: FileOutputStream(File file):创建一个向指定 File 对象表示的文件中写入数据的文件输出流; FileOutputStream(String name):创建一个向具有指定名称的文件中写入数据的输出文件流
善用系统的stdin,stdout有时可以做出强大的工具。下面的例子是使用python读取stdin的json文件,然后格式化,再写至stdout。
cin.get(数组名,接收字符数目) 用来接收字符串,可以接收空格,遇回车结束。由于字符串最后一个字符是'\0',所以当输入中超过len-1个字符时,实际只能接受len-1个字符。...cin.getline(接收字符串到m,接收个数n,结束字符) 接收一个字符串,可以接收空格等,最后一个字符为‘\0’。结束符可以通过设置第三个参数自己设置,默认是回车。m不能为string类型。...char d; //接收一个字符 cin.get(d); cout << "[get(d)]=" << d << " "<<(int)d<<endl; //舍弃流中的一个字符...(包括空格、回车、换行) cin.get(); //用来接收字符串,可以接收空格,遇回车结束。...数组的最后一个字符会是‘\0’ cin.get(buf,10); cout <<"[cin.get(buf,10)]=" <<buf << endl; //cin.getline(接收<em>字符串</em>到
参考链接: Java中的字符流与字节流 Character Stream对比Byte Stream 目录 先序 1、Bits 工具类 2、输入流 InputStream 2.1、字节数组输入流...BufferedInputStream 2.2.2、 数据输入流 DataInputStream 2.2.3、回推输入流 PushbackInputStream 2.3、文件输入流 FileInputStream 3、输出流...OutputStream 3.1、字节数组输出流 ByteArrayOutputStream 3.2、过滤输出流 FilterOutputStream 3.2.1、缓冲输出流 BufferedOutputStream... 3.2.2、DataOutputStream 数据输出流 3.3、文件输出流 FileOutputStream 先序 下面这张图是来自这篇博客https://blog.csdn.net/u010145219...1、Bits 工具类 Bits 是一个工具类,一般是供 java io 包下的类使用的,用于处理字节,因为输入输出流分为 字节流 和 字符流。
字符串逆序输出 描述 给定一行字符,逆序输出此行(空格.数字不输出) 输入第一行是一个整数N(N<10)表示测试数据的组数) 每组测试数据占一行,每行数据中间有且只有一个空格(这样你可以把此行当成两个字符串读取...每行字符长度不超过40 并且保证输入的字符只有空格(1个),数字,小写字母三种输出对应每行测试数据,逆序输出(空格和数字不输出)样例输入 3 abc 123de abc 123 abc d 样例输出 edcba
参考链接: Java基本输入和输出 在Android开发中,文件操作还是比较频繁的,本文主要记录下文件的加载,写入等相关操作的使用。 ...流的分类 在Java程序中操作文件,都是以流的形式来操作 首先按照流向可以分为输入流与输出流两种,这里的输入输出是站在内存的角度而言的,流向内存的为输入流,流出内存的为输出流按照传输的单位可以分为字节流与字符流...最后再根据将字节数组转换成需要的类型,最后也需要调用close释放资源 缓冲流 缓冲流相对于上述的字节流字符流并不是一个层面的东西,它并不具备直接操作文件的能力,而是要基于上述的字节流和字符流为基础...字符流主要包括FileWriter和FileReader,字符缓冲流BufferedWriter,BufferedReader,用法与上述的字节流基本一致,只不过调用read之后获取到的是字符类型,需要用...stringBuilder.toString()); fileReader.close(); bufferedReader.close(); 以上是对于常用的输入输出流使用的总结
通过数据流、序列化和文件系统提供系统输入和输出。 Java把这些不同来源和目标的数据都统一抽象为数据流。...在Java类库中,IO部分的内容是很庞大的,因为它涉及的领域很广泛:标准输入输出,文件的操作,网络上的数据流,字符串流,对象流,zip文件流。...在Java类库中,IO部分的内容是很庞大的,因为它涉及的领域很广泛:标准输入输出,文件的操作,网络上的数据流,字符串流,对象流,zip文件流….本文的目的是为大家做一个简要的介绍。 ...;一个表示文件名的字符串,也可以是File或FileDescriptor对象。 ...java是否刷新输出流。
IOException e) { throw new RuntimeException(e); } } } 字节流 字节输入流InputStream 字节输出流...输出流:只能写数据,不能读取数据 public class FileOutputDemo { public static void main(String[] args) {...缓冲输入流BufferedInputStream 缓冲输出流BufferedOutputStream 字符流 字符输入流Reader 字符输出流Writer 字节字符转环流 InputStreamReader...BufferedReader 缓冲输入流 BufferedWriter 缓冲输出流 /** * 和上边基本一致 */ FileInputStream fis = new FileInputStream(...对象序列化 步骤: 创建一个类,继承Serializable接口 创建对象 将对象写入文件 从文件读取对象信息 对象输入流ObjectInputStream 对象输出流ObjectOutputStream
(); java.io.writer: 字符输出流,是所有字符输出流的最顶层,是抽象类; 共性方法: abstract void close():关闭此流,但要先刷新它; abstract void...int len): 写入字符串的某一部分; FileWriter:文件字符输出流; 作用:把内存中字符数据写入文件中; 构造方法: FileWriter(File file):根据给定的 File 对象构造一个...=-1){ System.out.println(new String(bytes));//将byte数组转为字符串 } 字节缓冲输出流 BufferedOutputStream 代码: /...); byte[] bytes="哈哈".getBytes();//将字符串转为byte数组 bis.write(bytes); bis.close(); 五种拷贝文件方式: 输出后面的注释是运行时间...字节输入流、字节输出流)
其中, 所有输入流类都是抽象类InputStream(字节输入流),或者抽象类Reader(字符输入流)的子类; 而所有输出流都是抽象类OutputStream(字节输出流)或者Writer(字符输出流...(为了永久性的保存数据) 根据数据流向的不同分为输入流和输出流; 根据处理数据类型的不同分为字符流和字节流; 】 【然后需要明白的是输入模式和输出模式是谁流向谁: InputStream(字节输入流...OutputStream(字节输出流)和Writer(字符输出流)通俗的理解都是写(writer)的。 】 最后下面搞清楚各种流的类型的该怎么用,谁包含谁,理清思路。...4:输出流OutputStream类是字节输入流的抽象类,此抽象类表示输出字节流的所有类的超类。 5:Writer类是字符输出流的抽象类,所有字符输出类的实现都是它的子类。.... * 程序需要读取一段文本, 或者需要写出一段文本的时候可以使用字符流 * 读取的时候是按照字符的大小读取的,不会出现半个中文 * 写出的时候可以直接将字符串写出,不用转换为字节数组 IO流(字符流是否可以拷贝非纯文本的文件
输入输出的重要性: 输入和输出功能是Java对程序处理数据能力的提高,Java以流的形式处理数据。流是一组有序的数据序列,根据操作的类型,分为输入流和输出流。...] args) { OutputStream output = System.out; //实例化OutputStream对象 byte[] bytes = "使用OutputStream输出流在控制台输出字符串...: 使用OutputStream输出流在控制台输出字符串 输出内容: Java数据交互管道——IO流 3、文件字节输入流类 : FileInputStream类 文件字节输入流可以从指定路径的文件中读取字节数据...:FileOutputStream 文件字节输出流关联指定文件路径的文件,数据通过文件字节输出流以字节为单位输出并保存到文件中。...void write(String str , int off ,int len) 向输入流中写入一个字符串从off 开始长度为len的数据 Abstract void flush() 刷新当前输出流
领取专属 10元无门槛券
手把手带您无忧上云