黑马程序员-Java基础学习-IO流

------- android培训java培训、期待与您交流! ----------

IO流

用来处理设备之间的数据传输的,java对数据的操作是通过流的方式;JAVA用于操作流的对象都在IO包中。 
流栈操作数据分为两种:字节流和字符流;按流向分为: 输入流输出流。

常用的字节型的节点流有: 
文件:FileInputStream,FileOutputStream 
内存(数组):ByteArrayInputStream,ByteArrayOutputStream 
管道:PipedInputStream,PipedOutputStream

 

public static void main(String[] args)throws IOException {
			//复制文件,通过字节流已有的缓冲区对象。
			
			File srcFile = new File("tempfile\\file.txt");
			File destFile = new File("tempfile\\bufcopy_file.txt");
			
			//1,创建好流对象。
			FileInputStream fis = new FileInputStream(srcFile);
			FileOutputStream fos = new FileOutputStream(destFile);
			//2,创建缓冲区对象并和指定的流相关联
			BufferedInputStream bufis = new BufferedInputStream(fis);
			BufferedOutputStream bufos = new BufferedOutputStream(fos);
			//定义一个缓冲区
			byte[] buf = new byte[1024];

			int len = 0;
			while((len=bufis.read(buf))!=-1){//缓冲区的read方法从缓冲区中读取一个字节。
				bufos.write(buf,0,len);//将一个字节写入到缓冲区中。
				bufos.flush();//刷新缓冲区,将数据刷到目的地。
			}
		
			
			bufos.close();//缓冲区的关闭方法内部其实调用的是流的关闭方法。
			bufis.close();
		}


常用的字符型的节点流有: 

 

文件:FileReader, FileWriter 
内存(数组):CharArrayReader,CharArrayWriter 
内存(字符串):StringReader,StringWriter 
管道:PipedReader,PipedWriter

 

字符流的特点: 
数据最常见的体现形式是:文件 
需求:在硬盘上,创建一个文件,并写入一些文字数据。 
用于操作操作文件的Writer的子类FileWriter,后缀名是父类名。前缀名是该流对象的功能。 
操作步骤: 
1.创建一个FileWriter对象。该对象一被初始化就必须明确要被操作的文件,该文件会被创建到指定目录下,如果该目录下已经有同名文件,将被覆盖。 
FileWriter fw=new FileWriter(“demo.txt”); 
2.调用write方法,将字符串写入到流中。 
fw.write(); 
3.刷新流对象中的缓冲中的数据,将数据刷到目的地 
fw.flush(); 
4.关闭流资源,但是关闭之前会刷新一次内部的缓冲中的数据,将数据刷到目的地中。和flush的区别,flush刷新后,流可以继续使用,close刷新后将会将流关闭。 
fw.close();

 

 

文件的读取方式一: 
FileReader(); 
1.创建一个FileReader对象。文件读取流对象,和指定名称的文件相关联,要保证该文件是已经存在的,如果不存在会发生异常 
FileReader fr=new FileReader(“demo.txt”); 
2.调用读取流的对象的read方法 
(1)int ch=fr.read();一次读一个字符,会自动往下读。 
(2)读出所有字符 
while((ch=fr.read())!=-1) 

System.out.println((char)ch); 

3.关闭流资源, 
fr.close();

文件的读取方式二: 
通过字符数组进行读取 
1.创建一个FileReader对象。文件读取流对象,和指定名称的文件相关联,要保证该文件是已经存在的,如果不存在会发生异常 
FileReader fr=new FileReader(“demo.txt”); 
2.定一个字符数组,用于存储读到字符,该rrad(char[])返回的是读到的字符个数。 
char[] buf=new char[1024];一般定义1024-2个字节。 
int num=0; 
while((num=fr.read(buf))!=-1) 

System.out.println((new String(buf,0,num)); 
}

接着先一个复制文本文件例子,刚好可以理清纯文本的读写;

原理:就是将一个文件中的数据存储到另一个文件中。 
步骤: 
1,在d盘创建一个文件,用于存储c盘文件中的数据。 
2,定义读取流和源文件相关联。 
3,通过不断的读写完成数据存储。 
4,关闭资源。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值