Linux安全网 - Linux操作系统_Linux 命令_Linux教程_Linux黑客

会员投稿 投稿指南 本期推荐:
搜索:
您的位置: Linux安全网 > Linux编程 > » 正文

黑马程序员-毕向东java视频第18天(2)-IO流

来源: cjh6311882 分享至:
 

----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------

 


IO流用来处理设备之间的数据传输
java对数据的操作是通过流的方式
流按照操作数据分为两种:字节流和字符流
流按流向分为:输入流和输出流


IO常用的基类

字节流的抽象基类:
InputStream,OutputStream

字符流的抽象基类:
Reader,Writer

 

1.FileWriter类

源码:

/*
 *IO流式用于操作数据的
 *最常见的体现形式是:文件
 *
 *找到一个专门用于操作文件的Writer子类对象。FileWriter
 */
 import java.io.*;
 class FileWriterDemo
 {
 	public static void main(String[] args) throws IOException
 	{
 		//创建一个FileWriter对象,该对象一被初始化就必须明确被操作的文件
 		//而且该文件会被创建到指定目录下。如果该目录下已有同名文件,将被覆盖。
 		FileWriter fw=new FileWriter("demo.txt");
 		
 		//调用writer方法,将字符串写入到流中。
 		fw.write("abcde");
 		
 		//刷新流对象中的的缓冲中的数据
 		//将数据存储到目标文件中
 		
 		//fw.flush();
 		fw.close();//close()方法执行前会调用一次flush方法
 	}
 }


2.IO异常处理方式

源码:

 import java.io.*;
 class FileWriterDemo2
 {
 	public static void main(String[] args) throws IOException
 	{
 		FileWriter fw=null;
 		try
 		{
	 		fw=new FileWriter("k:\\demo.txt");
	 		
	 		fw.write("abcde");
 		}
 		catch(IOException e)
 		{
 			System.out.println(e.toString());
 		}
 		finally
 		{
 			try
 			{ 
 				if(fw!=null)  //如果文件没有打开,那么没有这一句close方法将会执行
	 			{
	 				fw.close();
	 			}
 			}
 			
 			catch(IOException e)
 			{
 				 System.out.println(e.toString());
 			}
 		}
 		
 	}
 }


3.文件的续写

源码:

/*
 *演示对已有文件的数据续写
 */
import java.io.*;
 class FileWriterDemo2
 {
 	public static void main(String[] args) throws IOException
 	{
 		FileWriter fw=null;
 		try
 		{
	 		fw=new FileWriter("demo.txt",true);
	 		
	 		fw.write("\r\nABCDEFG");//在windows里,换行由\r\n一起来表示,不能只用\n,和linux不一样
 		}
 		catch(IOException e)
 		{
 			System.out.println(e.toString());
 		}
 		finally
 		{
 			try
 			{ 
 				if(fw!=null)  //如果文件没有打开,那么没有这一句close方法将会执行
	 			{
	 				fw.close();
	 			}
 			}
 			
 			catch(IOException e)
 			{
 				 System.out.println(e.toString());
 			}
 		}
 		
 	}
 }


4.文本文件的读取方式(一)

源码:

import java.io.*;
class FileReaderDemo
{
	public static void main(String[] args) throws IOException
	{
		//创建一个文件流读取对象,和指定名称的文件相关联
		//要保证该文件已经存在,如果不存在,会发生异常FileNotFoundException
		FileReader fr=new FileReader("demo.txt");
		
		int ch=0;
		while((ch=fr.read())!=-1)//循环读取,每次读取一个字符,到达文件尾则返回-1
		{
			System.out.println((char)ch);
		}
		
	}
}

 

5.文件的读取方式(二)

源码:

/*第二种方式:通过字符数组读取。
 */
import java.io.*;
class FileReaderDemo
{
	public static void main(String[] args) throws IOException
	{
		//创建一个文件流读取对象,和指定名称的文件相关联
		//要保证该文件已经存在,如果不存在,会发生异常FileNotFoundException
		FileReader fr=new FileReader("demo.txt");
		
		//定义一个字符数组。用于存储读到的字符
		//该read(char[])返回的是读到字符个数
		char[] buf=new char[3];
		
		int num=0;
		while((num=fr.read(buf))!=-1)//循环读取,每次读取一个字符,到达文件尾则返回-1
		{
			System.out.println(new String(buf,0,num));//取从第一个到第num个字符,避免有数据不足3个字符的情况
		}
		
	}
}


6.文本文件读取练习

源码:

/*
 *输出一个java文件
 */
import java.io.*;
class FileReaderTest
{
 public static void main(String[] args) throws IOException
 {
  FileReader fr=new FileReader("FileReaderDemo2.java");
  
  char[] buf=new char[1024];
  
  int num=0;
  while((num=fr.read(buf))!=-1)//循环读取,每次读取一个字符,到达文件尾则返回-1
  {
   System.out.print(new String(buf,0,num));//取从第一个到第num个字符,避免有数据不足3个字符的情况
  }
  fr.close();
 }
}


 7.拷贝文本文件

源码:

//将C盘一个文本文件复制到D盘

/*
 *步骤:
 *1.在D盘创建一个文件,用于存储C盘文件中的数据
 *2.定义读取流和C盘文件关联
 *3.通过不断的读写完成数据存储
 *4.关闭资源
 */
import java.io.*;
class FileReaderTest
{
	public static void main(String[] args) throws IOException
	{
		copy_2();
	}
	public static void copy_1() throws IOException
	{
		FileReader fr=new FileReader("FileReaderDemo2.java");
		
		FileWriter fw=new FileWriter("FileReaderDemo2.txt");
				
		int ch=0;
		while((ch=fr.read())!=-1)//循环读取,每次读取一个字符,到达文件尾则返回-1
		{
			fw.write(ch);//取从第一个到第num个字符,避免有数据不足3个字符的情况
		}
		fw.close();
		fr.close();
	}
	public static void copy_2() throws IOException
	{
		FileReader fr=new FileReader("FileReaderDemo2.java");
		
		FileWriter fw=new FileWriter("FileReaderDemo2.txt");
		
		char[] buf=new char[1024];
		
		int num=0;
		while((num=fr.read(buf))!=-1)//循环读取,每次读取一个字符,到达文件尾则返回-1
		{
			fw.write(buf,0,num);//取从第一个到第num个字符,避免有数据不足3个字符的情况
		}
		fr.close();
		fw.close();
	}
}


Tags:
分享至:
最新图文资讯
1 2 3 4 5 6
验证码:点击我更换图片 理智评论文明上网,拒绝恶意谩骂 用户名:
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 发展历史