46.黑马程序员-IO流
来源:互联网 发布:苹果6手机怎么清除数据 编辑:程序博客网 时间:2024/05/29 02:27
------- android培训、java培训、期待与您交流! ----------
1、概述- IO流用来处理设备之间的数据传输。
- java对数据的操作是通过流的方式,用于操作流的对象都在IO包中。
- 流按操作数据分为:字符流、字节流。早期都是字节流,数据的最终形式是字节。
- 文本的频繁使用出现了字符流。编码映射表使字节转为字符,字符流在内部融合了编码表。
- 流按流向分为:输入流、输出流。日常操作电脑是读写。
2、常用基类
- 字节流的抽象基类:InputStream,OutputStream。
- 字符流的抽象基类:Reader,Writer。
- 字节流和字符流的子类结尾都是父类名,如FileInputStream,FileReader。
3、字符流
- Reader,Writer
- 构造方法修饰符是protected,只能子类使用、访问。
- 抽象类,含有部分抽象方法。
- 操作文件的子类FileWriter
- FileWriter所有构造函数,必须有要操作的文件参数,如果存在则覆盖。
- 使用会抛出异常:IOException。
- 示例代码
import java.io.*;class FileWriterDemo2{public static void main(String[] args) {FileWriter fw = null;//单独拿出来是因为流的建立和关闭不在一个代码块中。try{fw =new FileWriter("c:\\demo.txt");fw.write("第一次写入");}catch (IOException e){System.out.println(e.toString());}finally{try{if (fw != null)//这里判断流对象是否指向空,原因是初始化未完成。不判断会造成空指针异常。{//close要放在finally中,并且也要try。多个流需要分别关。fw.close();}}catch (IOException e){System.out.println(e.toString());}}}}
- 数据的续写
- 再建立FileWriter对象时,传递参数 FileWriter(" [路径] +文件名",true),true参数代表不覆盖已有文件并在文件末尾处数据续写,如不存在才创建。
- windows中回车符由 \r\n组成,只有\r或者\n,windows无法识别。显示为小黑方格。
- 数据的读取 read(char[] cbuf)(常用)
int
read(char[] cbuf)
将字符读入数组。int read(char[] cbuf)
返回读取到的元素个数。- 这个方法通过移动指针读取元素,每次使用这个方法指针都偏移到下一位元素。读取的最大数取决于数组长度,连续调用这个方法可以读取完所有元素。但是有个缺陷,最后一次读取如果元素只覆盖前面少数元素,后面元素还是原来的。例如abcdefg一次读3个,第一次abc,第二次def,第三次gef。
- 解决上面的问题可以使用String
(char[] value, int offset, int count)
方法,通过返回值,读取返回的元素个数。如果返回值是-1,读取结束。 /*练习:读取一个.java文件,并打印在控制台上。*/import java.io.*;class FileReaderTest{public static void main(String[] args) throws IOException{FileReader fr = new FileReader("c:\\Demo.txt");char[] buf = new char[1024];int num = 0;while ((num=fr.read(buf))!=-1){//注意这里不要用println,它会导致打印完缓冲区内容后换行。System.out.print(new String(buf,0,num));}}}
- 复制粘贴一个文件 ,例子C盘复制到D盘
- 方法一:
/*练习:复制文件,将C盘文件复制到D盘。原理:其实就是将C盘下的文件数据存储到D盘的一个文件中。步骤:1,在D盘创建一个文件,用于存储C盘文件的数据。2,定义读取流和C盘文件关联。3,通过不断的读取完成数据存储。4,关闭资源。*/import java.io.*; class CopyText{public static void main(String[] args) throws IOException{copy_2();}public static void copy_2(){FileWriter fw = null;FileReader fr = null;try{fw = new FileWriter("D:\\Demo_copy.txt");//目的fr = new FileReader("c:\\Demo.txt");//源char[] buf = new char[1024];int len = 0;while ((len = fr.read(buf)!=-1)){fw.write(buf,0,len);}}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){}}}public static void cop_1() throws IOException{//创建目的.FileWriter fw = new FileWriter("D:\\Demo_copy.txt");//创建源与已有文件关联。FileReader fr = new FileReader("c:\\Demo.txt");int ch = 0;while ((ch = fr.read())!=-1){fw.write(ch);//在fr里读一个字符,就写到fw里一个。}fw.close();fr.close();}//System.out.println("Hello World!");}
- 46.黑马程序员-IO流
- 黑马程序员 IO流
- 黑马程序员IO流
- 黑马程序员-IO流
- 黑马程序员---IO流
- 黑马程序员-----IO流
- 黑马程序员--io流
- 黑马程序员:IO流
- 黑马程序员----IO流
- 黑马程序员--IO流
- 黑马程序员-IO流
- 黑马程序员:IO流
- 黑马程序员IO流
- 黑马程序员:IO流
- 黑马程序员-IO流
- 黑马程序员---IO流
- 黑马程序员---IO流
- 黑马程序员---IO流
- 让 PowerDesigner 支持 SQLite!
- Sharepoint 2010, update panel在chrome裏不能postback的問題
- linux2.6.29 启动过程详细分析
- C#界面,C++核心算法(.NET与C++的交互)
- 深入理解成员函数的重载、隐藏、覆盖
- 46.黑马程序员-IO流
- RTP 协议关键参数的设置
- 孟建柱:确保十八大安保不影响民众正常生活-十八大-十八大安保-孟建柱
- 一个强大的漏洞公告网站
- Java Web HTTP协议
- Android PMem 和Ashmem 介绍
- HDX7000内置4点MCU拓扑图
- android 安全机制
- Android中BindService方式使用的理解