字符输出和字节输出 小师妹:F师兄,上次你的IO讲到了一半,文件读取是基本上讲完了,但是文件的写入还没有讲,什么时候给小师妹我再科普科普?...Writer中最最常用的就是FileWriter和BufferedWriter,我们看下一个最基本写入的例子: public void useBufferedWriter() throws IOException...其实BufferedWriter提供了三种写入的方式: public void write(int c) public void write(char cbuf[], int off, int len...格式化输出 小师妹:F师兄,我们经常用的System.out.println可以直接向标准输出中输出格式化过后的字符串,文件的写入是不是也有类似的功能呢?...在特定的位置写入 小师妹:F师兄,有时候我们不需要每次都从头开始写入到文件,能不能自定义在什么位置写入呢?
阻塞IO 1、java的IO接口 a、基于字节操作的IO接口 b、基于字符操作的IO接口 c、基于磁盘操作的IO接口 d、基于网络操作的IO接口 2、阻塞IO的通信模型 3、总结 a 、 BIO数据在写入...a、基于字节操作的IO接口 b、基于字符操作的IO接口 c、基于磁盘操作的IO接口 d、基于网络操作的IO接口 2、阻塞IO的通信模型 3、总结 a 、 BIO数据在写入OutputStream和从InputStream
1.在IO有两种数据传输格式一个是字符流还一个是字节流 但是字符流就会涉及到编码的问题 一开始美国使用的自己的编码表就是ASCII表 中国的字符需要被识别也需要...
writeLines:将容器中的元素的toString方法返回的内容依次写入文件中。 writeStringToFile:将字符串内容写到文件中。...write方法:向流里面写入内容。 writeLine方法:向流里面写入一行内容。 Post Views: 396
javaIO流….笔记 流向区分 应当以程序或者内存为参照物,(从文件或屏幕等)往内存中读入叫做输入流,反之输出流。...字符流的基类:Reader,Writer FileOutputStream & FileInputStream 往文件中读写数据就用FileOutputStream & FileInputStream 向文件写入数据
字符流的工作方式是: 输出字符流:把要写入文件的字符序列(实际上是Unicode码元序列)转为指定编码方式下的字节序列,然后再写入到文件中 输入字符流:把要读取的字节序列按指定编码方式解码为相应字符序列...} catch (IOException e) { e.printStackTrace(); } } } 用FileWriter像demo.txt写入了...demo这四个字符,如果用十六机制编辑器打开文件可以看到64 65 6D 6F,我们并没有在代码中指定编码方式,实际上,在我们没有指定时使用的是操作系统的默认字符编码方式来对我们要写入的字符进行编码。...;字符流操作的基本单元为Unicode码元 字节流默认不使用缓冲区;字符流使用缓冲区(转换编码) 字节流通常用于处理二进制数据,实际上它可以处理任意类型的数据,但它不支持直接写入或读取Unicode码元...;字符流通常处理文本数据,它支持写入及读取Unicode码元 字符流和字节流的选择 字符流操作对象: 纯文本 需要查指定编码表,默认是(GBK) 字节流操作的对象 图像,音频等文件 无需指定编码表 选择合适的流
RandomAccessFile(File,"rw") 文件指针,打开文件时指针在开头 pointer = 0 写方法: raf.write(int)--->只写一个字节(后8位),同时指针指向下一个位置,准备再次写入...读方法: int b = raf.read()--->读一个字节 注意关闭流 raf.close() 常用操作 getFilePointer() 获取当前指针所在位置 write() 向文件写入byte...writeInt() 向文件写入int length() 文件长度 read() 读取文件内容 seek() 移动指针位置第几位 Code File demofile = new File...("E://javaio"); if(!
LineNumberReader本身并没有太多的东西,他是BufferedReader的子类
功能简介 我们之前一直说流顺序的,不能随机访问,的确之前说的IO体系的确如此 但是 RandomAccessFile自成一派 此类的实例支持对随机访问文件的读取和写入 我们之前介绍过DataOutput..."rw" 打开以便读取和写入。如果该文件尚不存在,则尝试创建该文件。 ..."rws" 打开以便读取和写入,对于 "rw",还要求对文件的内容或元数据的每个更新都同步写入到底层存储设备。 ..."rwd" 打开以便读取和写入,对于 "rw",还要求对文件内容的每个更新都同步写入到底层存储设备。...seek方法设置的偏移量,下一次的读写将从这个位置开始 偏移量的设置可能会超出文件末尾,这并不会改变什么 但是一旦你在这个超出文件末尾的偏移量位置写入数据,长度将会改变
BufferedInputStream,内部缓冲了一个数组,所有的数据都要经过这个缓冲区,然后对他做处理 他内部维护的缓冲区,仅仅保存pushBack的字节 还需要注意的是他的内部缓冲区是从后往前写入的...,也就是下图中的,从右往左下标索引大的先写入一旦写满, 会抛出异常throw new IOException("Push back buffer is full"); 推回一个字节由于是从最后开始,...一旦pos等于0也就是到了最前面,就无处可放了所以抛出异常否则,就在前面写入一个 推回 指定字节数组b 从off偏移量开始的len个字节推回len个长度,既然是从后往前设置数据,那么pos的值就是可用...byte[] b, int off, int len)的简化形式用于拷贝整个数组 从unread可以清晰的看出来内部的缓冲区,只是为了给被回退掉的数据使用的每次回退就是在最前面(下表索引较小的位置) 写入数据...那么它将从底层输入流中读取字节 PushBackInputStream 不支持标记点相关的操作 总结 PushBackInputStream的实现逻辑比较清晰 我内部有一个缓冲区,你要是回退了我就往里面写入数据
假设我们需要等待 Socket 的数据,也就是说当前是一个读操作的 IO,那么在操作系统层面需要分为两步: 等待数据被写入 Socket 的缓冲区中 将 Socket 缓冲区中的数据拷贝到应用程序中 我们可以很容易的发现...二、五种 IO 模型 1、同步阻塞 在同步阻塞的 IO 模型中,在第一阶段(等待数据被写入 Socket 的缓冲区中),操作系统会把当前的进程设置为阻塞状态,直到缓冲区被写入数据这个进程才被唤醒。...这两种方法均为异步的,对于读操作而言,当有流可读取时,操作系统会将可读的流传入 read 方法的缓冲区,并通知应用程序;对于写操作而言,当操作系统将 write 方法传递的流写入完毕时,操作系统主动通知应用程序
是否自动刷新的标志位所谓自动刷新,就是每次调用方法后,看下标志位,如果设置了,那么调用一下out.flush()比如下面这段代码 所以,为了自动刷新,可以创建一个 PrintStream这个autoFlush 会在:写入...byte数组之后,println调用,写入一个换行符,或者写入一个 '\n' 这几种场景下自动刷新(如果是true) 构造方法 先看下他的私有的构造方法其他所有的方法都是调用这两个构造方法...+println() = println(boolean) print(char) 字符转换为一个或多个字节 以 write(int) 方法的方式写入这些字节 +println() =... println(char) print(int) String.valueOf(int)生成字符串转换为字节 以 write(int) 方法的方式写入这些字节 +println() =...println(int) print(long) String.valueOf(long)生成字符串转换为字节 以 write(int) 方法的方式写入这些字节 +println() =
FileOutputStream fos = null; try { //创建文件字节输出流对象,文件不存在时会自动新建 //该方法会先将原文件清空,然后重新写入...//fos=new FileOutputStream("F:/myfile.txt"); //下面这种方法在文件末尾追加写入,不会清空原文件内容 fos...java.io.FileOutputStream; import java.io.IOException; /** * java.io.DataOutputStream 数据专属的字节输出流 * 这个流可以将数据连同数据的类型一并写入文件
对于计算机来说,数据都是以二进制形式读出或写入的。我们可以把文件想象为一个桶,我们可以通过管道将桶里的水抽出来。这里的管道也就相当于Java中的流。流的本质是一种有序的数据集合,有数据源和目的地。
通道可以非阻塞读取和写入通道,通道可以支持读取或写入缓冲区,也支持异步地读写。 Java IO 的各种流是阻塞的 IO 操作。...当一个线程执行向 Channel 执行写入 IO 操作时,不需要阻塞等待它完全写入,这个线程同时可以做别的事情。...所以,一个单独的线程,可以管理多个 Channel 的读取和写入 IO 操作。...// 当数据写入到缓冲区中时,指针指向数据最后一行,那么缓冲区写入通道中输出时,是从最后一行数据开始写入, // 这样就会导致写入1024的剩余没有数据的空缓冲区。...NIO总是把缓冲区的数据写入通道,或者把通道里的数据读出到缓冲区(buffer)。
ClassNotFoundException 类实现Serializable接口后,Java文件编译成class文件时,会添加一个作为唯一标识的serialVersionUID,这个序列号在序列化时会写入序列化文件
他与PrintStream的逻辑上功能目的是相同的--他们都想做同一件事情--更便捷的格式化打印输出 PrintWriter实现了PrintStream 中的所有 print 方法,除了那些用于写入原始字节的方法...,对于那些字节,程序应该使用未编码的字节流进行写入 PrintStream会在换行符时自动调用自动刷新 PrintWriter在这一点上与PrintWriter不同, 只有在调用...5个版本的write void write(char[] buf) 将字符数组 写入 void write(char[] buf, int off, int...len) 将字符数组的某一部分 写入 void write(int c) 将单个字符 写入 void... 方法查看 trouble 的状态 print(xxx) /println(xxx) println()通过写入行分隔符字符串终止当前行。
FileReader和FileWriter这两个流对象可以直接把文件转成读取、写入流。让你省去了创建字节流,再套上转换流的步骤。
in不为null,进行读取 如果不是-1 返回,如果是那么更新当前的in 指向下一个流.........直到最后一个流, in就是一个游标 多参数的也是类似从流中读取数据,如果读取到了,返回n,数据写入到字节数组
PushBackReader 与 PushBackInputStream实现的原理是一样的
领取专属 10元无门槛券
手把手带您无忧上云