zoukankan      html  css  js  c++  java
  • 黑马程序员——JAVA基础之IO流FileReader,FileWriter

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

    IO(Input Output)流


    IO流用来处理设备之间的数据传输

    Java对数据的操作是通过流的方式

    Java用于操作流的对象都在IO包中

    流按操作数据分为两种:字节流与字符流。

    流按流向分为:输入流,输出流。

     

     

     IO流常用基类

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

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

    注:由这四个类派生出来的子类名称都是以其父类名作为子类名的后缀。

    •  如:InputStream的子类FileInputStream。

    •  如:Reader的子类FileReader。

     

    IO程序的书写

    导入IO包中的类

    进行IO异常处理

    在finally中对流进行关闭

     

    字符流——创建文件

    创建流对象,建立数据存放文件     FileWriter fw = new FileWriter(“Test.txt”);

    调用流对象的写入方法,将数据写入流        fw.write(“text”);

    关闭流资源,并将流中的数据清空到文件中      fw.close();

     

    import java.io.FileWriter;
    import java.io.IOException;
    
    
    public class IODemo 
    {
    	public static void main(String[] args)
    	{
    		FileWriter fw = null;
    		
    		try
    		{
    			fw = new FileWriter("Test.txt");
    			fw.write("test");
    		}
    		catch (IOException e)
    		{
    			System.out.println(e.toString());
    		}
    		finally
    		{
    			if (fw != null)
    				try
    				{
    					fw.close();
    				}
    			    catch (IOException e)
    			    {
    			    	System.out.println(e.toString());
    			    }
    		}
    	}
    }
    


     

    字符流——读取文件

    建立一个流对象,将已存在的一个文件加载进流。       FileReader fr = new FileReader(“Test.txt”);

    创建一个临时存放数据的数组        char[] ch = new char[1024];

    调用流对象的读取方法将流中的数据读入到数组中            fr.read(ch);

    import java.io.FileReader;
    import java.io.IOException;
    
    public class IODemo 
    {
    	public static void main(String[] args)
    	{
    		FileReader fr = null;
    		
    		try
    		{
    			fr = new FileReader("E:\JAVA\Demo\Test.txt");
    			char[] buf = new char[1024];
    			int len = 0;
    			while ((len = fr.read(buf)) != -1)
    			{
    				System.out.println(new String(buf,0,len));
    			}
    		}
    		catch (IOException e)
    		{
    			System.out.println("read Exception:"+e.toString());
    		}
    		finally
    		{
    			if (fr != null)
    			{
    				try
    				{
    					fr.close();
    				}
    				catch (IOException e)
    				{
    					System.out.println("close Exception"+e.toString());
    				}
    			}
    		}
    	}
    }
    


     

    注意:

    定义文件路径时,可以用“/”或者“\”。

    在创建一个文件时,如果目录下有同名文件将被覆盖。

    在读取文件时,必须保证该文件已存在,否则出异常。

    flush()和close()区别:flush刷新后,流可以继续使用,close刷新后,会将流关闭。

    FileWriter(): 后缀是父类名,前面是该流对象的功能

    import java.io.FileWriter;
    import java.io.IOException;
    
    /**
     * 
     * 需求:在硬盘上创建一个文件并写入一些数据
     *
     */
    
    public class IODemo 
    {
    	public static void main(String[] args) throws IOException
    	{
    		//创建一个FileWriter对象。该对象一被初始化就必须要明确被操作的文件。  
                         //而且该文件会被创建到指定目录下。如果该目录下已有同名文件,将被覆盖。  
                         //其实该步就是在明确数据要存放的目的地。
    		FileWriter fw = new FileWriter("FileWriter.txt");
    		
    		//调用write方法,将字符串写入到流中。
    		fw.write("The code run!");
    		
    		//刷新流对象中的缓冲中的数据。  
                         //将数据刷到目的地中。
    		fw.flush();
    		
    		//关闭流资源,但是关闭之前会刷新一次内部的缓冲中的数据。  
                         //将数据刷到目的地中。  
                         //和flush区别:flush刷新后,流可以继续使用,close刷新后,会将流关闭。
    		fw.close();
    	}
    }
    


    通过实验发现,FileWriter() 会覆盖已有数据,要通过传递参数true来续写。

    import java.io.FileWriter;
    import java.io.IOException;
    
    /**
     * 
     * 需求:在硬盘上续写一些数据
     *
     */
    
    public class IODemo 
    {
    	public static void main(String[] args) throws IOException
    	{
    		
    		FileWriter fw = new FileWriter("FileWriter.txt",true);
    		
    		fw.write("The code run!");
    		
    		fw.close();
    	}
    }
    

    FileReader读取的第一种方式:

    import java.io.FileReader;
    import java.io.IOException;
    
    /**
     * 
     * FileReader演示:
     *
     */
    public class FileReaderDemo 
    {
    	public static void main(String[] args) throws IOException
    	{
    		//创建一个文件读取流对象,和指定名称的文件相关联。  
                         //要保证该文件是已经存在的,如果不存在,会发生异常FileNotFoundException  
    		FileReader fr = new FileReader("E:\JAVA\Demo\FileWriter.txt");
    		
    		int ch = 0;
    		
    		//调用读取流对象的read方法。  
                         //read():一次读一个字符。而且会自动往下读。
    		while ((ch = fr.read()) != -1)
    		{
    			System.out.println((char)ch);
    		}
    		fr.close();
    	}
    }
    



    第二种:

    import java.io.FileReader;
    import java.io.IOException;
    
    /**
     * 
     * FileReader演示:
     *
     */
    public class FileReaderDemo 
    {
    	public static void main(String[] args) throws IOException
    	{
    
    		FileReader fr = new FileReader("E:\JAVA\Demo\FileWriter.txt");
    		
    		char[] buf = new char[1024];
    		
    		int len = 0;
    		
    		while ((len = fr.read(buf)) != -1)
    		{
    			System.out.println(new String(buf,0,len));
    		}
    		fr.close();
    	}
    }
    


     

    /*
    需求:将C盘一个文本文件复制到D盘。
    
    复制的原理:
    其实就是将C盘下的文件数据存储到D盘的一个文件中。
    
    步骤:
    1,在D盘创建一个文件。用于存储C盘文件中的数据。
    2,定义读取流和C盘文件关联。
    3,通过不断的读写完成数据存储。
    4,关闭资源。
    */
    import java.io.*;
    
    class CopyText 
    {
    	public static void main(String[] args) throws IOException
    	{
    		copy();
    	}
    
    
    	public static void copy()
    	{
    		FileWriter fw = null;
    		FileReader fr = null;
    		try
    		{
    			fw = new FileWriter("SystemDemo_copy.txt");
    			fr = new FileReader("SystemDemo.java");
    
    			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)
    				{
    				}
    			if(fw!=null)
    				try
    				{
    					fw.close();
    				}
    				catch (IOException e)
    				{
    				}
    		}
    	}
    }
    


     

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

  • 相关阅读:
    正则表达式
    [创业指南]给海归技术创业兄弟的九个忠告
    about avast
    设计模式Hibernate
    job desc
    把INT转换成2进制等
    微服务调用跟踪
    Redis 分布式锁实现
    jquery中的$.ajax()方法
    订单从ftp写入到b2b
  • 原文地址:https://www.cnblogs.com/runwind/p/4212181.html
Copyright © 2011-2022 走看看