黑马程序员————IO流详解---(1)

本文详细介绍了Java中文件操作的基本方法,包括FileWriter的使用、文本文件的读取方式,并提供了实例代码演示。

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------


概述:

一个字节8bit,每个bit位是0.1两种状态。字节作为最基本的存储单位。

英文字符:一个字节

中文字符:两个字节

机器上都是字节,二进制数据。


文件操作:

FileWriter:构造时会抛出异常(只要与设备发生联系,就会抛出异常),当该目录有同名文件时,会覆盖该文件,创建一个新文件。

java调用windows写操作,java本身不能写数据,不能系统写操作不同。靠系统内部方法完成读写。

这调用会使用系统的资源,因此流一定要关闭。


Close():关闭流资源,但会先刷新一次。

Flush():只是刷新数据,之后流仍然可以被操作。


练习:

import java.io.*;
public class FileWriterDemo {
		public static void main(String[] args)throws Exception
		{ 
			//创建一个FileWriter对象,该对象一被初始化就必须要明确被操作的文件。
			//而且该文件会被创建到指定目录下,如果该目录下有同名文件,将被覆盖。
			//其实该步就是在明确数据要存放的目的地。
			FileWriter fw=new FileWriter("E:\\demo.txt");
			
			/*续写:传递一个参数true,代表不覆盖原来文件,在其后面续写内容
			Filewriter fw=new FileWriter("e://demo.txt",true);
			换行 :\r\n
			fw.write("heima....\r\nbaoming");
			fw.close();
			*/
			
			//调用write方法,将字符串写入到流中。
			fw.write("zhuzhu");
			//刷新流对象中的缓冲中的数据。
			//将数据刷到目的地中。
			//fw.flush();
			
			
			//关闭流资源,但是关闭之前会进行一次刷新内部的缓冲中的数据。
			//将数据刷到目的地中。
			//和flush的区别:flush刷新后,流可以继续使用,close刷新后,会将流关闭。
			fw.write("jiapjiao");
			fw.write("jiapjiao");
			fw.close();
			
		}
	}


文本文件读取的第一种方法:



代码体现:

import java.io.*;
public class FileWriterDemo2 {
		public static void main(String[] args)throws Exception
		{ 
			FileReader fr=new FileReader("e:/demo.txt");
			int ch=0;
			while((ch=fr.read())!=-1){
				System.out.print((char)ch);
			}
			
		}
	}

文件读取的第二种方法:



 

每次由于数组长度是3,因此打印都是3个字符,当不足3个时,它会把之前存进数组中的元素打印出来。

字符串打印有另一种方法,就是指定长度,所有当还剩几个元素时,就打印几个元素。


代码体现:

<span style="background-color: rgb(204, 204, 204);">import java.io.*;

public class FileWriterDemo3 {
	public static void main(String[] args) throws Exception {
		FileReader fr = new FileReader("E:/demo.txt");

		// 定义一定字符数组,用于存储读到的字符。
		// 该read(char[])返回的是读到字符的个数。
		char[] buf = new char[1024];
		int num = 0;
		while ((num = fr.read(buf)) != -1)
			System.out.println(new String(buf, 0, num));
		
		fr.close();

	}
}
</span>

练习:拷贝文本文件

复制原理:其实就是将源文件存储到另一个路径下

步骤:

1.在e盘创建一个文件,用于存储d盘的数据

2.定义一个读取流和d盘文件相关联

3.通过不断的读写完成数据存储。

4.关闭资源。


import java.io.*;
public class FileCopy {
	public static void main(String[] args){
		FileReader fr=null;
		FileWriter fw=null;
		try{
		//与源文件关联
		 fr=new FileReader("e:/demo.txt");
		//与目标文件关联
		 fw=new FileWriter("d:/democopy.txt");
		
		int num=0;
		char[] arr=new char[1014];
		while((num=fr.read(arr))!=-1){//读取源文件
			fw.write(new String(arr,0,num));//写入目标文件
			fw.flush();
		}
		}catch(Exception e){
			System.out.println("复制文件失败!");
			e.printStackTrace();
		}finally{
			try{
				if(fr!=null)
					fr.close();
			}catch(Exception e){
				e.printStackTrace();
			}
			try{
				if(fw!=null)
					fw.close();
			}catch(Exception e){
				e.printStackTrace();
			}
		}
	}
	
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值