s字符流与字节流的区别在于?
字节流和字符流的区别:
①在于每次读写的字节数不同;字符流是快读写,字节流是字节读写;
②字符流带有缓存,字节流没有。
③java流在处理上分为字符流和字节流。字符流处理的单元为2个字节的Unicode字符,分别操作字符、字符数组或字符串,而字节流处理单元为1个字节,操作字节和字节数组。
java读文件取得换行符?
提示,不要通过字节流或者是字符流的形式进行读取,可以直接通过BufferedReader 流的形式进行流读取,就没有换行符无法区分的问题,之后通过readLine方法获取到流的内容。
BufferedReader bre = null;try {String file = "D:/test/test.txt"
;bre = new BufferedReader(new FileReader(file))
;//此时获取到的bre就是整个文件的缓存流while ((str = bre.readLine())!= null) // 判断最后一行不存在,为空结束循环{System.out.println(str)
;//原样输出读到的内容};备注: 流用完之后必须close掉,如上面的就应该是:bre.close(),否则bre流会一直存在,直到程序运行结束。
java的输入和输出为什么要那么复杂?
Java的IO设计的确很复杂,很多朋友在使用时IO时被各种各样的流弄的晕头转向。
大致情况如下
以Stream结尾的为字节流,以Writer或者Reader结尾的为字符流,
所有的输入流都是抽象类IuputStream(字节输入流)或者抽象类Reader(字符输入流)的子类。
所有的输出流都是抽象类OutputStream(字节输出流)或者抽象类Writer(字符输出流)的子类
之所以IO那么复杂,是为了更好的应对各种场景,比如
BufferedWriter 从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。由于继承了FilterInputStream,其可用于包装装饰其他流使它们提高效率,既采用了装饰设计模式。
InputStreamReader和OutputStreamWriter转换流,作为字符和字节的桥梁
对象操作流ObjectInputStream和ObjectOutputStream用于Java 对象的基本数据类型和图形读写。
用于操作数组ByteArrayInputStream,字符串StringWriter等流
区分技巧,下面分享下我找到的一份IO使用技巧总结
IO设计非常复杂不过其目标还是为了能更好的应对各种场景使用更适合的流提高效率。希望我的回答对你有所帮助。