码迷,mamicode.com
首页 > 编程语言 > 详细

java io流一

时间:2016-05-12 12:16:47      阅读:230      评论:0      收藏:0      [点我收藏+]

标签:

/*
对于IO输入输出流有两大类:
1,字节流(一般用的比较多)
2,字符流(指针对文字(包括中英文等各国语言文字)),字符流与字节流的区别之处就是字符流对象中融合了编码方式,即文字以哪种方式编码,以避免出现乱码。

常用的四个抽象基类:
字节流:InputStream、OutputStream
字符流:Reader、Writer
这四个基类的子类都是以这四个基类的名字作为后缀的,所以比较容易识别子类。

既然IO流是用于操作数据的,那么数据的最常见体现形式是:文件

本例以操作文件为主来演示。

需求:在硬盘上,创建文件并写入文字数据。

*/

import java.io.*;
class FileWriterDemo 
{
	public static void main(String[] args) throws IOException
	{

		/*创建一个FileWriter对象,该对象一旦初始化就必须要明确被操作的文件。
		而且该文件会被创建到指定目录下。如果该目录中已有同名文件,则原始文件将被覆盖。
		其实该步就是明确数据要存放的目的地。
		*/
		FileWriter fw=new FileWriter("D:\\myfile\\111.txt");

		/*
		调用write方法将文字写到流中
		*/
		fw.write("Hello World\n");


		/*
		刷新流对象中的缓冲中的数据。
		将数据刷到目的地。
		*/
		fw.flush();
		fw.write("hdgbjshfjsdv,chvjsdhc");
		
		
		/*
		关闭流资源,但是关闭之前会刷新一次内部的缓冲中的数据。
		将数据刷到目的地中。
		close()和flush()的区别:close刷新后,会关闭流;而flush刷新后,流可以继续使用。
		*/
		fw.close();
	}
}
import java.io.*;
class FileWriterDemo1
{
	public static void main(String[] args) 
	{
		writeFile();
		readFile();
	}
		
	

	public static void writeFile()
	{
		FileWriter fw=null;
		try
		{
			fw=new FileWriter("D:\\myfile\\MyCode\\1.txt",true);//true代表如果文件已经存在,那么在此文件后续写而不覆盖原来的文件。
			fw.write("\r\ndemetria");
		}
		catch (IOException e)
		{
			System.out.println(e.toString());
		}
		finally
		{
			try
			{
				if(fw!=null)//这个一定要判断是否为空,然后再关闭文件
					fw.close();
			}
			catch (IOException e)
			{
				System.out.println(e.toString());
			}
			
		}
	}

	public static void readFile()
	{
		FileReader fr=null;
		int ch=0;

		try
		{
			fr=new FileReader("D:/myfile/MyCode/1.txt");
			while((ch=fr.read())!=-1)
			{
				sop("ch="+(char)ch);
			}

			/*while(true)
			{
				ch=fr.read();
				if(ch==-1)
					break;
				sop((char)ch);
			}*/

		}
		catch (IOException e)
		{
			sop(e.toString());
		}
		finally
		{
			try
			{
				if(fr!=null)
					fr.close();
			}
			catch (IOException e)
			{
				sop(e.toString());
			}
			
		}
	}

	public static void sop(Object obj)
	{
		System.out.println(obj);
	}
}

/*
第二种方法通过字符数组来获取
将读取到的每个字符存在定义好的字符数组中。
*/

import java.io.*;

class FileWriterDemo2 
{
	public static void main(String[] args) 
	{
		writefile();
		readfile();

	}


	public static void writefile()
	{
		FileWriter fw=null;

		try
		{
			fw=new FileWriter("D:/myfile/MyCode/2.txt",true);
			fw.write("HelloWorld!");
		}
		catch (IOException e)
		{
			sop(e.toString());
		}
		finally
		{
			try
			{
				if(fw!=null)
					fw.close();
			}
			catch (IOException e)
			{
				sop(e.toString());
			}
		}
	}

	public static void readfile()
	{
		FileReader fr=null;
		try
		{
			fr=new FileReader("D:\\myfile\\MyCode\\2.txt");
			char[] ch=new char[1024];
			int num=0;
			while((num=fr.read(ch))!=-1)
			{
				sop(new String(ch,0,num));
			}
		}
		catch (IOException e)
		{
			sop(e.toString());
		}
		finally
		{
			try
			{
				if(fr!=null)
					fr.close();
			}
			catch (IOException e)
			{
				sop(e.toString());
			}
			
		}
	}

	public static void sop(Object obj)
	{
		System.out.println(obj);
	}
}

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

复制的原理:
其实就是将C盘下的文件数据存储到D盘的文件中。

步骤:
1,在D盘新建一个文件。用于存储C盘文件中的数据;
2,定义读取流和C盘文件关联;
3,通过不断地读写完成数据存储。
*/
import java.io.*;
class FileWriterDemo4 
{
	public static void main(String[] args) throws IOException
	{
		FileWriter fw=null;

		FileReader fr=null;
		try
		{
			fw=new FileWriter("D:/myfile/MyCode/newdemo.txt");//定义写字符流对象
			fr=new FileReader("C:/test/old.txt");
			int num=0;
			char[] ch=new char[1024];
			int count=0;
			while((num=fr.read(ch))!=-1)
			{
				fw.write(new String(ch,0,num));
				count++;
			}
		
			System.out.println("count:"+count);//count的值为1说明循环只走了一次。
		}
		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)
				{
				}
			
		}
	}
}



java io流一

标签:

原文地址:http://blog.csdn.net/iemdm1110/article/details/51372153

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!