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

小师妹学JavaIO之:文件写入那些事

字符输出和字节输出 小师妹: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师兄,有时候我们不需要每次都从头开始写入到文件,能不能自定义在什么位置写入呢?

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

javaIO

字符流的工作方式是: 输出字符流:把要写入文件的字符序列(实际上是Unicode码元序列)转为指定编码方式下的字节序列,然后再写入到文件中 输入字符流:把要读取的字节序列按指定编码方式解码为相应字符序列...} catch (IOException e) { e.printStackTrace(); } } } 用FileWriter像demo.txt写入了...demo这四个字符,如果用十六机制编辑器打开文件可以看到64 65 6D 6F,我们并没有在代码中指定编码方式,实际上,在我们没有指定时使用的是操作系统的默认字符编码方式来对我们要写入的字符进行编码。...;字符流操作的基本单元为Unicode码元 字节流默认不使用缓冲区;字符流使用缓冲区(转换编码) 字节流通常用于处理二进制数据,实际上它可以处理任意类型的数据,但它不支持直接写入或读取Unicode码元...;字符流通常处理文本数据,它支持写入及读取Unicode码元 字符流和字节流的选择 字符流操作对象: 纯文本 需要查指定编码表,默认是(GBK) 字节流操作的对象 图像,音频等文件 无需指定编码表 选择合适的流

27820

JavaIO之PushBackInputStream

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的实现逻辑比较清晰 我内部有一个缓冲区,你要是回退了我就往里面写入数据

74120

JavaIO之RandomAccessFile

功能简介 我们之前一直说流顺序的,不能随机访问,的确之前说的IO体系的确如此 但是 RandomAccessFile自成一派 此类的实例支持对随机访问文件的读取和写入 我们之前介绍过DataOutput..."rw" 打开以便读取和写入。如果该文件尚不存在,则尝试创建该文件。 ..."rws" 打开以便读取和写入,对于 "rw",还要求对文件的内容或元数据的每个更新都同步写入到底层存储设备。 ..."rwd"   打开以便读取和写入,对于 "rw",还要求对文件内容的每个更新都同步写入到底层存储设备。...seek方法设置的偏移量,下一次的读写将从这个位置开始 偏移量的设置可能会超出文件末尾,这并不会改变什么 但是一旦你在这个超出文件末尾的偏移量位置写入数据,长度将会改变

95330

JavaIO流:模型

假设我们需要等待 Socket 的数据,也就是说当前是一个读操作的 IO,那么在操作系统层面需要分为两步: 等待数据被写入 Socket 的缓冲区中 将 Socket 缓冲区中的数据拷贝到应用程序中 我们可以很容易的发现...二、五种 IO 模型 1、同步阻塞 在同步阻塞的 IO 模型中,在第一阶段(等待数据被写入 Socket 的缓冲区中),操作系统会把当前的进程设置为阻塞状态,直到缓冲区被写入数据这个进程才被唤醒。...这两种方法均为异步的,对于读操作而言,当有流可读取时,操作系统会将可读的流传入 read 方法的缓冲区,并通知应用程序;对于写操作而言,当操作系统将 write 方法传递的流写入完毕时,操作系统主动通知应用程序

34260

JavaIO之PrintStream

是否自动刷新的标志位所谓自动刷新,就是每次调用方法后,看下标志位,如果设置了,那么调用一下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() =

58110

JavaIO之PrintWriter

他与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()通过写入行分隔符字符串终止当前行。

99420
领券