黑马程序员技术交流社区
标题: Java中的IO笔记整理,根据毕老师的视频整理,纯手打,持..... [打印本页]
作者: ywen_chan 时间: 2015-4-28 10:31
标题: Java中的IO笔记整理,根据毕老师的视频整理,纯手打,持.....
IO(Input Output)流:
l IO流(或者称呼为数据流)用来处理设备(包括硬盘,内存)之间的数据传输。
l Java对数据的操作是通过流的方式操作,
l Java用于操作流的对象都在IO包中
l 流按操作分为两种:字节流与字符流。(早期出现的都是字节流,因为最终传输的都是二进制,所以都是字节流;字符流是因为用二进制代表a,b…字符,制作成一张表,ASCII表,用以操作字符。我们中国GBK,收录中国的文字和符号。Unicode是国际标准码表,是国际上所有的字符码表,后来又优化演变成UT-8码表。字符流的好处就是在内部融合了编码表,让我们自己来指向编码表。处理图片都是使用字节流,通用的是字节流,因为字符流基于字节流。)
l 流按流向分:输入流和输出流。
IO常用基类:
l 字节流的抽象基类:
InputStream,OutStream
l 字符流的抽象基类:
Reader,Writer
l 注意:由这四个类派生出来的子类名称都是以其父类名作为子类的后缀。如:InputStream的子类FileInputStream。Reader的子类FileReader
FileWriter:(写入文件的便捷类)
/*字符流和字节流;字节流的两个基类:InputStream和OutStream;字符流的两个基类:Reader和Writer
特点:既然IO流是用于操作数据的,那么数据最常见的形式就是:文件。操作文件的子类对象FileWriter。
*/
例子:创建一个文件并写入数据
- Import java.io.*;
- Class FileWriterDemo
- {
- Public static void main(String[] args) throws IOException
- {
- //创建一个FileWriter对象,该对象一被初始化就必须要明确被操作的文件
- //而且该文件会被创建到指定目录下。如果该目录下已有同名文件,将被覆盖。
- //其实该步骤就是在明确数据要存放的目的地。
- FileWriter fw = new FileWriter(“demo.txt”);
- //写入字符串,没有直接写入,而是写到内存中,其实就是写到了流当中
- fw.write(“abcd”);
- fw.flush();//刷新流对象中的缓存中的数据//将数据刷到目的地中
- //fw.write(“haha”);//每一次写数据都要刷新
- //fw.flush();
- fw.close();//关闭数据流资源,但是关闭之前会刷新一次内部的缓存中的数据,将数据刷新到目的地,和flush的区别,flush刷新后,流可以继续使用,close刷新后,会将流关闭
- }
- }
复制代码 IO异常处理方式:牢记- Import java.io.*;
- Class FileWriterDemo2
- {
- Public static void main(String[] args)
- {
- FileWriter fw=null;
- try
- {
- fw=new FileWriter(“demo.txt”);
- fw.write(“abcdefg”);
- //fw.close();
- }
- Catch(IOException e)
- {
- System.out.println(e.toString()) ;
- }
- finally
- {
- Try{
- If(fw!=null)
- fw.close();
- }
- catch(IOException e)
- {
- System.out.println(e.toString()) ;
- }
- }
- }
复制代码文件的续写:
- Import java.io.*;
- Class FileWriterDemo3
- {
- public static void main(String[] args) throws IOException
- {
- //传递一个true参数,代表不覆盖已有的文件,并在文件的末尾处进行数据续写
- FileWriter fw=new FileWriter(“demo.txt”,true);
- fw.write(“nihai\r \nhahha”);//windows下的换行符为\r \n
- fw.close();
- }
- }
复制代码
文件的读取:FileReader用于读取文件的便捷类,此类的构造方法用的是默认编码(系统中的编码类型,GBK或者其他)
例子:
- import Java.io.*;
- class FileReaderDemo
- {
- Public static void main(String[] args) throws IOException
- {
- //创建一个文件读取流对象,和指定的名称的文件相关联。要保证该文件是已经存在的,如果不存在,会发生异常FileNotFoundException
- FileReader fr=new FileReader(“demo.txt”)
- //int ch=fr.read();//读一个字符,而且自动往下读。如果读到流的末尾,返回(-1)
- //System.out.println(“ch=”+(char)ch);
- //Fr.close();
- //连续读完
- int ch=0;
- while((ch=fr.read()!=-1))
- {
- System.out.println((char)ch);
- }
- }
- }
复制代码
拷贝文件。//将C盘的一个文本文件复制到D盘
原理:其实就是将C盘的文件数据存储到D盘的一个文件中,
步骤:1、在D盘创建一个文件,用于存储C盘文件中的数据;2、定义读取流和C盘文件关联,3、通过不断的读写完成数据存储。4、关闭资源。
- import Java.io.*;
- class FileReaderDemo2
- {
- Public static void main(String[] args) throws IOException
- {
- copy_1();//逐个读,速度慢
- copy_2();//写到字符数组;效率高
- }
- //从C盘读一个字符,就往D盘写一个字符
- public static void copy_1()
- {
- //创建目的地
- FileWriter fw=new FileWriter(“RuntimeDemo.txt”);
- //与已有文件关联
- FileReader fr=new FileReader(“RuntimeDemo.java”);
- int num=0;
- while(num=fr.read()!=-1)
- {
- fw.write(num);
- }
- fw.close();
- fr.close();
- }
- public static void copy_2()
- {
- FileWriter fw=null;
- FileReader fr=null;
- try
- {
- fw=new FileWriter(“SystemDemo_copy.txt”);
- fr=new FileReader(“SystemDemo.java”);
- char[] buf=new char[1024];
- int num=0;
- while(num=fr.read(buf)!=-1)
- {
- fw.write(buf,0,num);
- }
- catch(IOException e)
- {
- Throw new RuntimeException(“读写失败”);
- }
- finally
- {
- if(fr!=null)
- try
- {
- fr.close();
- }
- Catch(IOException e)
- {
- }
- if(fw!=null)
- try
- {
- fw.close();
- }
- Catch(IOException e)
- {
- }
- }
- }
- }
- }
复制代码
待续.....
作者: 李海明 时间: 2015-4-28 16:12
不错做的。
作者: 谢永烽 时间: 2015-4-28 16:26
刚看完毕老师的IO流这章,老师剖析的很彻底,做练习时候运用到之前的很多技术点 才发现 自己很多之前的知识已经慢慢丢的差不多了,三天不练手生 是真的,七天得回顾 也很重要啊!
作者: ywen_chan 时间: 2015-4-28 20:55
确实啊,我之前看的也有些忘记了,所以我就边看边打,第二天再回顾,觉得忘记了,就再回顾。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |