黑马程序员 io中的字符流(毕向东)
来源:互联网 发布:苹果cms整合ck教程 编辑:程序博客网 时间:2024/06/05 19:11
字符流中有缓冲区,采用缓冲区的方式读取,比读一个输出一个读取的方式好。
1. 按照内容分为字节流和字符流
2. //换行,不同的系统调用不同的换行符--通用。windows=\r\n unix=\n
privatestatic final String LINE_SEPARATOR = System.getProperty("line.separator");通用
3. fw.write("abcde"+LINE_SEPARATOR+"hahaha");换行输出
//需求:读取一个文本文件。将读取到的字符打印到控制台.public class FileReaderDemo2 {/** * @param args * @throws IOException */public static void main(String[] args) throws IOException {FileReader fr = new FileReader("demo.txt");/* * 使用read(char[])读取文本文件数据。 * * 先创建字符数组。 */char[] buf = new char[1024];int len = 0;while((len=fr.read(buf))!=-1){System.out.println(new String(buf,0,len));}/*int num = fr.read(buf);//将读取到的字符存储到数组中。System.out.println(num+":"+new String(buf,0,num));int num1 = fr.read(buf);//将读取到的字符存储到数组中。System.out.println(num1+":"+new String(buf,0,num1));int num2 = fr.read(buf);//将读取到的字符存储到数组中。System.out.println(num2+":"+new String(buf));*/fr.close();}}
2.不如上面的代码好,不建议,效率低
//需求:读取一个文本文件。将读取到的字符打印到控制台.public class FileReaderDemo {/** * @param args * @throws IOException */public static void main(String[] args) throws IOException {//1,创建读取字符数据的流对象。/* * 在创建读取流对象时,必须要明确被读取的文件。一定要确定该文件是存在的。 * * 用一个读取流关联一个已存在文件。 */FileReader fr = new FileReader("demo.txt");int ch = 0;while((ch=fr.read())!=-1){System.out.println((char)ch);}/*//用Reader中的read方法读取字符。int ch = fr.read();System.out.println((char)ch);int ch1 = fr.read();System.out.println(ch1);int ch2 = fr.read();System.out.println(ch2);*/fr.close();}}
3.复制文件
/* * 需求:作业:将c盘的一个文本文件复制到d盘。 * * 思路: * 1,需要读取源, * 2,将读到的源数据写入到目的地。 * 3,既然是操作文本数据,使用字符流。 * */public class CopyTextTest {/** * @param args * @throws IOException */public static void main(String[] args) throws IOException {//1,读取一个已有的文本文件,使用字符读取流和文件相关联。FileReader fr = new FileReader("IO流_2.txt");//2,创建一个目的,用于存储读到数据。FileWriter fw = new FileWriter("copytext_1.txt");//3,频繁的读写操作。int ch = 0;while((ch=fr.read())!=-1){fw.write(ch);}//4,关闭流资源。 fw.close();fr.close();}}
4.复制文件第二种方式,比上面的效率高
public class CopyTextTest_2 {private static final int BUFFER_SIZE = 1024;/** * @param args */public static void main(String[] args) {FileReader fr = null;FileWriter fw = null;try {fr = new FileReader("IO流_2.txt");fw = new FileWriter("copytest_2.txt");//创建一个临时容器,用于缓存读取到的字符。char[] buf = new char[BUFFER_SIZE];//这就是缓冲区。 //定义一个变量记录读取到的字符数,(其实就是往数组里装的字符个数 )int len = 0;while((len=fr.read(buf))!=-1){fw.write(buf, 0, len);}} catch (Exception e) {//System.out.println("读写失败");throw new RuntimeException("读写失败");}finally{if(fw!=null)try {fw.close();} catch (IOException e) {e.printStackTrace();}if(fr!=null)try {fr.close();} catch (IOException e) {e.printStackTrace();}}}}
5.输入流和输出流相对于内存设备而言.
将外设中的数据读取到内存中:输入
将内存的数写入到外设中:输出。
字符流的由来:
其实就是:字节流读取文字字节数据后,不直接操作而是先查指定的编码表。获取对应的文字。
在对这个文字进行操作。简单说:字节流+编码表
---------------------------------------
字节流的两个顶层父类:
1,InputStream 2,OutputStream.
字符流的两个顶层父类:
1,Reader 2,Writer
这些体系的子类都以父类名作为后缀。
而且子类名的前缀就是该对象的功能。
就从熟悉的文字开始字符流,
//需求:将一些文字存储到硬盘一个文件中。
记住;如果要操作文字数据,建议优先考虑字符流。
而且要将数据从内存写到硬盘上,要使用字符流中的输出流。Writer
硬盘的数据基本体现是文件。 希望找到一个可以操作文件的Writer.
找到了FileWriter
//需求:读取一个文本文件。将读取到的字符打印到控制台.
同上,找到了FileReader
7.复制文件图例
0 0
- 黑马程序员 io中的字符流(毕向东)
- 黑马程序员 io中的缓冲字符流,装饰设计模式(毕向东)
- 黑马程序员 io流中的字节流、字节缓冲流、转换流(重要)(毕向东)
- 黑马程序员-IO流中的字符流
- 黑马程序员_毕向东_Java基础视频教程第十八天-IO流---学习笔记
- 黑马程序员 java 基础 毕向东 面向对象 IO流操作
- 黑马程序员-------IO流(字符流)
- 黑马程序员_毕向东_Java基础_DAY18-19_IO基础、字符流
- 黑马程序员java 基础之io流中的字符流
- 《黑马程序员》毕向东 HTML
- 黑马程序员_毕向东JAVA基础_IO流(一)
- 黑马程序员_毕向东_JavaScript视频教程(1)
- 黑马程序员_毕向东_JavaScript视频教程(2)
- 黑马程序员_毕向东_JavaScript视频教程(3)
- 黑马程序员_毕向东_JavaScript视频教程(4)
- 黑马程序员_毕向东_JavaScript视频教程(5)
- 黑马程序员_毕向东_JavaScript视频教程(6)
- 黑马程序员---毕向东老师视频笔记(关于static)
- Tortoise SVN 分支和合并操作
- debian系统下MySQL的安装及设置
- Password Algorithms: Internet Explorer 10 (Windows Vault)
- Leetcode: Gas Station
- C++自动类型转换
- 黑马程序员 io中的字符流(毕向东)
- 无知的暴虐4
- 科学计算与绘图--python解决方案
- Javascript Global对象
- 三步教你实现MyEclipse的debug远程调试
- 多维vector
- Lucene的索引原理简析
- C 数据结构 AVL树实现
- Graph embedding and extensions: a general framework for dimensionality reducation