IO流 第一部分 (OutputStreamWriter BufferOutputStream) 转换流 超类为Reader和Writer 是字符流通向字节流的桥梁:可使用指定的字符编码表,将要写入流中的字符编码成字节 InputStreamReader inputStreamReader = new InputStreamReader(new FileInputStream("d://deo2. txt")); char[] b = new char[2]; int len = 0; bos.write(bytes); bos.write(bytes, 3, 2)
话接上回,继续java IO部分的学习。上一次说完了字节流的读写数据,这次介绍一下字符流的读写数据。 该方法返回实际读取的字符数,如果返回 -1,则表示已经到了输入流的末尾 示例 import java.io.FileInputStream; import java.io.IOException; import 示例(使用字符流复制java文件) 用转换流InputStreamReader和OutputStreamWriter实现字符流复制java文件 转换流作用:将字节流转换为字符流 import java.io ; import java.io.FileWriter; import java.io.IOException; // FileReader和FileWriter类分别为InputStreamReader ; import java.io.IOException; import java.io.OutputStreamWriter; // OutputStreamWrite类:将字节输出流转换为字符输出流
; import java.io.BufferedWriter; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter ; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream ; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.InputStreamReader ; import java.io.OutputStreamWriter; public class TranStreamDemo2 { public static void main(String
(答案:只是说明它写入了内核的send_queue) java nio是水平触发的, 而且缓冲区超过"低水位"就触发读事件, 不超过"高水位"就触发写事件, 那这个水位到底多高? "低水位"一词来自<unix网络编程卷1>, 本文假设你已经读过. read和write的返回值意义(写的返回值>=0, 读的返回值>= -1, 其中-1代表EOF) 参考 Java NIO SocketChannel write与DirectByteBuffer实现分析中,《Hadoop技术内幕》提到了可将写入的数据分成固定大小(比如8KB)的chunk,并以chunk为单位写入DirectBuffer 初识 Java write getTemporaryDirectBuffer和SocketChannelImpl值得分析 Java nio直接内存原理 提到了ByteBuffer.allocateDirect底层用malloc ,我总结一下吧: 读是从socket的输入缓存(socket's input buffer)读,写是从socket的输出缓存写 nio中,读不一定读满,写也不一定写满,根据返回值来决定下一步行为 根据Java
学习java的Io操作(2),往文件中写入内容,读取文件中的内容! package com.dufy.io; import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.File ; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream ; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream ; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.Writer; /** * * 练习
此外,Java也对块传输提供支持,在核心库 java.nio中采用的便是块IO。 流IO的好处是简单易用,缺点是效率较低。块IO效率很高,但编程比较复杂。 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public Java.IO流类库 1. io流的四个基本类 java.io包中包含了流式I/O所需要的所有类。 在java.io包中, java.io.InputStream 表示字节输入流, java.io.OutputStream表示字节输出流,处于java.io包最顶层。 import java.io.File; import java.io.IOException; import java.io.FileOutputStream; import java.io.FileInputStream
https://blog.csdn.net/suifeng3051/article/details/48344587 一、java io 概述 1.1 相关概念 Java IO Java IO即Java 在JDK1.4之后,为了提高Java IO的效率,Java又提供了一套新的IO,Java New IO简称Java NIO。它在标准java代码中提供了高速的面向块的IO操作。 本篇文章重点介绍Java IO,关于Java NIO请参考我的另两篇文章: Java NIO详解(一) Java NIO详解(二) 流 在Java IO中,流是一个核心的概念。 2.1 Java IO的类型 虽然java IO类库庞大,但总体来说其框架还是很清楚的。 start(); } } 3.7 Java IO:网络媒介 关于Java IO面向网络媒介的操作即Java 网络编程,其核心是Socket,同磁盘操作一样,java网络编程对应着两套API,即Java
IO框架图: Java 的 I/O 操作类在包 java.io 下,大概有将近 80 个类,但是这些类大概可以分成四组,分别是: 基于字节操作的 I/O 接口:InputStream 和 OutputStream ; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream 2个字节来表示 package cn.czbk.no9; import java.io.UnsupportedEncodingException; import java.util.Arrays; ; import java.io.IOException; import java.io.OutputStream; import java.io.OutputStreamWriter; public ; import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; import java.io.FileWriter
基于字节的java.io.printSteam支持方便的打印方法,如print()和println(),用于打印原语和文本字符串。 示例 PrintStreamDemo package com.xgj.master.java.io.fileDemo.characterStreams; import java.io.FileNotFoundException ; import java.io.IOException; import java.io.PrintStream; import org.junit.Test; /** * * * @ClassName pFile.close(); } } } } PrintWriterDemo package com.xgj.master.java.io.fileDemo.characterStreams ; import java.io.File; import java.io.FileNotFoundException; import java.io.PrintWriter; import org.junit.Test
在上文中《Java IO(1)基础知识——字节与字符》了解到了什么是字节和字符,主要是为了对Java IO中有关字节流和字符流有一个更好的了解。 本文所述的输出输出指的是Java中传统的IO,也就是阻塞式输入输出(Blocking I/O, BIO),在JDK1.4之后出现了新的输入输出API——NIO(New I/O或Non-blocking 输入流(InputStream) 站在程序的角度,读取文件的动作称为输入,InputStream是一个抽象类,Java中IO的设计并不仅仅是只有InputStream类,因为存在许多输入流,例如网络 相对于阻塞式的IO也是类似,阻塞式IO也会一直等待数据的读取和写入直到完成;而对应的非阻塞式IO则不会这样做,它会立即返回,不管是完成或未完成。 所以问题还是回到了“阻塞”式IO上来,想要解决这个问题就需要使用到“非阻塞”式IO,这也是下节所讲内容。
,而IO读写为顺序读写, * 即只能向后读写操作不能回退 * * 2:文件流可以借助流连接完成复杂 * 读写操作,这一点是RAF做不到的 * @author QAIU * */ public : package io; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectOutputStream 内部表示字符数据时都是用char表示(2字节) java.io.Writer java.io.Reader 上面两个类是抽象类,是所有字符输出流和字符输入流的超类 里面规定了读写字符相关的方法 转换流 ; import java.io.IOException; import java.io.OutputStream; import java.io.PrintStream; import java.io.PrintWriter java.io.OutputStreamWriter; import java.io.PrintWriter; public class PWDemo2 { public static void
传统 IO:场景:将磁盘上的文件读取出来,然后通过网络协议发送给客户端。传统文件IO:产生4次用户上下文切换,4次拷贝。 DMA (Direct Memory Access,直接内存存取,即不使用 CPU 拷贝数据到内存,而是 DMA 引擎传输数据到内存,用于解放 CPU)2、第二次数据拷贝:CPU 将内核缓冲区的数据拷贝到用户缓冲区 想要优化文件传输的性能就两个方向,因为这两个是最耗时的1、减少上下文切换次数2、减少数据拷贝次数
下面是使用Java I/O类需要注意的地方 InputStream和OutputStream是所有字节流的超类,read()和write()是基本方法,读写处理的都是字节。
字符流(16 bit) 流向不同:输入流,输出流 流的角色不同:节点流,处理流 抽象基类 字节流 字符流 输入流 InputStream Reader 输出流 OutputStream Writer java 中涉及到的io流基本都是从以上四个抽象基类派生出来的,其子类都是以其父类的名字做后缀。 //1.实例化file类对象,指明要操作的文件 File file = new File("D:\\IdeaCode\\hello.txt"); //2. srcFile = new File("D:\\IdeaCode\\hello.txt"); File destFile = new File("D:\\IdeaCode\\hello2. br.close(); isr.close(); } } 八、打印流 PrintStream:字节打印流 PrintWriter:字符打印流 格式化输出 在JDK1.5之后,JAVA
1 IO流的分类 1.1 按数据流的方向:输入流、输出流 此输入、输出是相对于我们写的代码程序而言。 输入流:从别的地方(本地文件,网络上的资源等)获取资源输入到我们的程序中。 1.2 按处理数据单位不同:字节流、字符流 1字符=2字节、1字节(byte)=8位(bit)、一个汉字占两个字节长度。 字节流:每次读取(写出)一个字节,当传输的资源文件有中文时,就会出现乱码。 字节流和字符流的区别: 字节流读取单个字节,字符流读取单个字符(一个字符根据编码的不同,对应的字节也不同,如 UTF-8 编码是 3 个字节,中文编码是 2 个字节。) 处理流的构造方法总是要带一个其他的流对象做参数,一个流对象经过其他流的多次包装, 2 四大抽象类 IO所谓的四大抽象类就是:InputStream、OutputStream、Reader、Writer。
IO流 第一部分 (outputStream/InputStream Writer/Redaer) IO流对象中输入和输出是相辅相成的,输出什么,就可以输入什么. IO的命名方式为前半部分能干什么,后半部分是父类的名字. (FileOutputStream 文件输出流) java->JVM->OS 流对象使用的基本步骤 创建流的子类对象,绑定数据目的地(文件路径) 使用write方法写或read方法读 close()方法关闭流对象 fos.write(bytes); //写字节数组的一部分,开始索引,写几个 fos.write(bytes, 1, 2) 2); fw.flush(); //写如字符串
字节流,字符流基本概念 File类不支持文件内容处理,如果要处理文件内容,必须要通过流的操作模式来完成 在java.io包中,流分为两种:字节流与字符流 字节流:读写数据以字节为基本单位(处理二进制文件 示例:复制图片 1)初阶: package dqy0305; import java.io.FileInputStream; import java.io.FileNotFoundException ; import java.io.FileOutputStream; import java.io.IOException; public class IODemo2 { //实现文件的复制 缓冲区就是byte[] 字符流的读写操作以char为单位,缓冲区就是char[] 示例: 1)不带缓冲区 import java.io.FileReader; import java.io.FileWriter ; import java.io.IOException; //字符流:可以来处理文本文件 public class IODemo5 { public static void main(String
IO流大家肯定不陌生,简单整理了一下常用IO流基本用法,其他的IO流还有很多以后有时间在整理。 1.基本概念 IO:Java对数据的操作是通过流的方式,IO流用来处理设备之间的数据传输,上传文件和下载文件,Java用于操作流的对象都在IO包中。 2.IO流的分类 图示:(主要IO流) 3.字节流 (1).字节流基类 1).InputStream InputStream:字节输入流基类,抽象类是表示字节输入流的所有类的超类。 = -1) { System.out.print(new String(b, 0, i2) + " ");// AB CD } //关闭IO流 inputStream2.close(); 注: 一次读取一个字节数组 // 关闭IO流 outputStream2.close(); 注;输出的目的地文件不存在,则会自动创建,不指定盘符的话,默认创建在项目目录下;输出换行符时一定要写\r\n不能只写\n,因为不同文本编辑器对换行符的识别存在差异性
前言 友友们大家好,我是你们的小王同学 今天给大家带来的是 希望能给大家带来有用的知识 小王的主页:小王同学 小王的gitee:小王同学 小王的github:小王同学 JAVA IO 原理 I/O是Input/Output的缩写,I/O技术是非常实用的技术,用于处理数据传输,如读/写文件,网络通讯 Java程序中,对于数据的输入/输出操作以"流(stream)"的方式进行。 java.io包下提供了各种"流"类和接口,用以获取不同的种类的数据,通过方法输入或输出数据 输入input:读取外部数据(磁盘 光盘等存储设备的数据)到程序(内存)中 输出output:将程序(内存 按数据流的流向不同的:输入流 输出流 按流的角色不同分为:节点流,处理流\包装流 抽象基类 字节流 字符流 输入流 InputStream Reader 输出流 OutputStream Writer Java 的 io流共涉及40多个类,实际上非常规则,都是从如上4个抽象基类派生的。
字节输入流:InputStream,字节输出流:OutputStream 字符输入流:Reader,字符输出流:Writer .解释一下java.io.Serializable接口(面试常考) 类通过实现 Java.io.Serializable 接口以启用其序列化功能。 的println方法自动添加换行,不会抛异常,若关心异常,需要调用checkError方法看是否有异常发生,PrintWriter构造方法可指定参数,实现自动刷新缓存(autoflush); .什么是java 序列化,如何实现java序列化? Java对象的序列化指将一个java对象写入OI流中,与此对应的是,对象的反序列化则从IO流中恢复该java对象。