黑马程序员_java入门_IO流_2

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

 

IO流是指数据的传输,包括输入流和输出流

 

数据流分为:字符流和字节流

 

字节流类有:InputStream,OutputStream

字符流类有:Reader,Writer

 

它们的子类都以父类名作为后缀 如:FileInputStream

FileReader

 

写入字符流的步骤

1.先创建一个文件,开流

FileWriter fw=new FileWriter(“demo.txt”);

2.写入

fw.write("abc");

3.刷新

fw.flush();

将流中的数据刷入目的地

4.关流

fw.close();

关流前其实close()方法会调用flush()

 

IO异常的专业处理

FileWriter fw=null;

try{

         fw=new  FileWriter("C:\\demo.txt");//目录分隔符用双\号,他肯能创建不成功,所以后面必须执行的关流动作也要处理

         fw.write("123456")

  

 

}

catch(IOException e)

{

sop(e.toString());

}

finally//关流动作一定要执行

{

    try{

if(fw!=null)

fw.close();//这句话也可能出现异常,所以也要处理

}

catch(IOException e)

{

sop(e.toString);

}

 

}

 

三.IO对已有的文件的续写

FileWriter(“demo.txt”,true)

填写true表示续写,不填写表示从头开始写,覆盖已有的文件

 

四.文件的读取

FileReader fr=null;

一步.开流,读取流

fr=new FileReader("demo.txt");//如果文件不存在会发生异常

第二步:读read()

一次只能读一个字符

如果没有读到,就会返回-1

while((ch=fr.read())!=-1){

sop((char)ch);

}

 

第二种方式 先缓存

char[] buf=new char[1024];

int num=0;

while((num=fr.read(buf))!=-1){//将读到的数据存入到数组里面去

sop(new String(buf,0,num))num为返回的读取字符个数,

}

 

五.拷贝文件的两种方式

 

class CopyText
{
	public static void main(String[] args)
	{
	}
	public static void copy_1() throws IOException
	{
		FileWrite fw=new FileWrite("RuntimeDemo.txt");
		FileRead fr=new FileRead("RuntimeDemo.java");
		int ch=0;
		while((ch=fr.read())!=-1)
		{
			fw.write(ch);
		}
		fw.close();
		fr.close();
		/
		FileWrite fw=null;
		FileRead fr=null;
		try
		{
			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)
			{
				sop(e.toString);
			}
			if(fw!=null)
			try
			{
				fw.close();	
			}
			catch(IOException e)
			{
				sop(e.toString);
			}
		}
	}



}

class CopyTextByBuf
{
	public static void main(String[] args)
	{
		BufferedReader bufr=null;
		BufferedWriter bufw=null;
		try
		{
			bufr=new BufferedReader(new FileReader(""));
			bufw=new BufferedWriter(new FileWriter(""));
			String line=null;
			while((bufr.readLine())!=null)
			{
				bufw.write(line);
				bufw.flush();
			}
			
		}
		catch(IOException e)
		{
			throw new RuntimeException("");
		}
		finally
		{
			try
			{
				if(bufr!=null)
				bufr.close();
			}
			catch(IOException e)
			{
				throw new RuntimeException("");
			}
			try
			{
				if(bufw!=null)
				bufw.close();
			}
			catch(IOException e)
			{
				throw new RuntimeException("");
			}
		}
		
	}



}


 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值