zoukankan      html  css  js  c++  java
  • JAVA学习第四十八课 — IO流(二):文件的复制 & 缓冲区1

    一、复制文本文件

    将G盘的文本文件拷贝到D盘上

    也就是 读取G盘中文本文件的数据。写入D盘中->连读带写

    而剪切呢。就是连读带写后,删除原盘的文件

    <span style="font-family:KaiTi_GB2312;font-size:18px;"><strong>import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    
    public class Main 
    {
    	public static void main(String[] args) throws IOException {
    		
    		FileReader fr = null;
    		FileWriter fw  = null;
    		try {
    			fr = new FileReader("G盘.txt");
    			fw = new FileWriter("D:\ACM.txt");
    			char[] ch = new char[1024];//缓存读取的数据
    			int t ;
    			while((t = fr.read(ch))!=-1){
    				fw.write(ch,0,t);
    			}
    		} catch (Exception e) {
    			System.out.println("读写失败");
    		}finally{
    			if(fw!=null)
    			{
    				try {
    					fw.close();
    				} catch (Exception e2) {
    					throw new RuntimeException();
    				}
    			}	
    			if(fr!=null){
    				try {
    					fr.close();
    				} catch (Exception e2) {
    					throw new RuntimeException();
    				}
    			}	
    		}
    	}
    }</strong></span>

    一个文件假设正在使用,是不能被删除的,所以注意要将这两个动作关联起来


    二、字符流的缓冲区

    实际上,上面的char[]数组就是一个缓冲区。缓冲区的出现提高了对数据的读取效率

    BufferedWriter类、BufferedReader类

    前提:缓冲区必须结合流才干使用

    作用:在流的基础上对流的功能进行了增强

    BufferWriter类演示

    将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。

    能够指定缓冲区的大小。或者接受默认的大小。在大多数情况下,默认值就足够大了。

    特有方法:newLine()

    <span style="font-family:KaiTi_GB2312;font-size:18px;">import java.io.BufferedWriter;
    import java.io.FileWriter;
    import java.io.IOException;
    
    public class Main 
    {
    	public static void main(String[] args) throws IOException {
    		
    		FileWriter fw = new FileWriter("ACM.txt");
    		//创建一个字符写入流的缓冲区对象,并和指定要被缓冲的流对象相关联 
    		BufferedWriter bw = new BufferedWriter(fw);
    		//使用缓冲去的方法,将数据写入到缓冲区中
    		bw.write("ACM。

    。。。"); bw.newLine();//实际上 System.getproperty("line.separator"); bw.write("acm"); //在用缓冲去的刷新方法,将数据写入目的地 bw.newLine(); bw.flush(); for(int i = 0;i<5;i++){ bw.write("1111"); bw.newLine(); bw.flush(); } //关闭缓冲区,事实上关闭的就是被缓冲的流对象fw bw.close(); } } </span>


    BufferedReader类演示

    从字符输入流中读取文本。缓冲各个字符,从而实现字符、数组和行的高效读取。

    能够指定缓冲区的大小,或者可使用默认的大小。大多数情况下。默认值就足够大了。

    特有方法:readLine()


    <span style="font-family:KaiTi_GB2312;font-size:18px;"><strong>import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.IOException;
    
    public class Main 
    {
    	
    
    	public static void main(String[] args) throws IOException {
    		
    		FileReader fr = new FileReader("ACM.txt");
    		
    		BufferedReader br = new BufferedReader(fr);
    		
    		String str = null;
    	
    		while((str = br.readLine())!= null){
    			System.out.println(str);
    		}
    		br.close();
    	}
    }
    </strong></span>

    注意:

    readLine()方法:使用了读取缓冲区的read方法,将读取到的字符进行缓冲并推断换行标记。将标记前的缓冲数据变成字符串并返回

  • 相关阅读:
    linux常用命令整理
    pg_sql常用查询语句整理
    python 爬取媒体文件(使用chrome代理,启动客户端,有防火墙)
    python 爬取媒体文件(无防火墙)
    python读写符号的含义
    python数据分析开发中的常用整理
    wget: 无法解析主机地址
    ## nginx 使用
    iptables防火墙
    【redis】Could not connect to Redis at 127.0.0.1:6379: Connection refused
  • 原文地址:https://www.cnblogs.com/gavanwanggw/p/6768850.html
Copyright © 2011-2022 走看看