zoukankan      html  css  js  c++  java
  • Java 使用字符流拷贝数据

    使用字符流拷贝数据时,需要注意在文件末尾处的数据,因为最后一次读取的长度不会刚好与数组input长度相同,所以需要引入新的变量来存储每次读取的长度。

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.io.UnsupportedEncodingException;
    
    public class RWByCharStream {
    
    	public static void main(String[] args) {
    		try {
    			
    			
    //			File file=new File("java.txt");
    			FileInputStream fis=new FileInputStream("java.txt");
    			InputStreamReader isr=new InputStreamReader(fis,"UTF-8");
    			FileOutputStream fos=new FileOutputStream("java_copy.txt");
    			OutputStreamWriter osw=new OutputStreamWriter(fos);
    			
    			char input[]=new char[100];
    			int f=0;
    			while((f=isr.read(input))!=-1) {
    //				System.out.println(new String(input,0,f));
    				osw.write(input,0,f);
    			}
    			isr.close();
    			fis.close();
    			osw.close();
    			fos.close();
    			
    		} catch (FileNotFoundException e) {
    			e.printStackTrace();
    		} catch (UnsupportedEncodingException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    	}
    
    }
    

    使用缓冲字符流读写数据:

    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.io.UnsupportedEncodingException;
    
    public class RWByBufferedCharStream {
    
    	public static void main(String[] args) {
    		try {
    			
    //			File file=new File("java.txt");
    			FileInputStream fis=new FileInputStream("java.txt");
    			InputStreamReader isr=new InputStreamReader(fis,"UTF-8");
    			FileOutputStream fos=new FileOutputStream("java_copy_buffer.txt");
    			OutputStreamWriter osw=new OutputStreamWriter(fos);
    			
    			BufferedReader br=new BufferedReader(isr);
    			BufferedWriter bw=new BufferedWriter(osw);
    			
    			String input;
    			while((input=br.readLine())!=null) {
    				bw.write(input);
    			}
    			
    			bw.close();
    			br.close();
    			isr.close();
    			fis.close();
    			osw.close();
    			fos.close();
    			
    		} catch (FileNotFoundException e) {
    			e.printStackTrace();
    		} catch (UnsupportedEncodingException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    	}
    
    }
    

     拷贝的文件中没有换行,全在同一行。

    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.io.PrintWriter;
    import java.io.UnsupportedEncodingException;
    
    public class RWByBufferedCharStream {
    
    	public static void main(String[] args) {
    		try {
    			
    //			File file=new File("java.txt");
    			FileInputStream fis=new FileInputStream("java.txt");
    			InputStreamReader isr=new InputStreamReader(fis,"UTF-8");
    			FileOutputStream fos=new FileOutputStream("java_copy_buffer.txt");
    			OutputStreamWriter osw=new OutputStreamWriter(fos);
    			
    			BufferedReader br=new BufferedReader(isr);
    //			BufferedWriter bw=new BufferedWriter(osw);
    			PrintWriter pw=new PrintWriter(osw);
    			
    			String input;
    			while((input=br.readLine())!=null) {
    //				bw.write(input);
    				pw.println(input);
    			}
    			
    //			bw.close();
    			pw.flush();  //将最后一次读取的内容从缓冲区读出来
    			pw.close();
    			br.close();
    			isr.close();
    			fis.close();
    			osw.close();
    			fos.close();
    			
    		} catch (FileNotFoundException e) {
    			e.printStackTrace();
    		} catch (UnsupportedEncodingException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    	}
    
    }
    

     使用PrintWriter代替BufferedWriter,方便处理最后一次读取的内容和每行里的换行。

  • 相关阅读:
    javascript 笔记
    小程序组件 Vant Weapp 安装
    vue学习笔记——脚手架安装
    [二分] [计算几何] AtCoder Beginner Contest 144 D Water Bottle
    [单调队列][前缀和][滑窗][Codeforces] Round #594 (Div. 2) D1 The World Is Just a Programming Task
    [Codeforces] 592 div2 A B D E
    [Codeforces] Round #595 (Div. 3) A B1 B2 C1 C2 D1 D2 E
    [Codeforces] Global Round 5 A C1 C2 D
    [主席树单点更新区间极值动态开点][最长上升子序列] CodeForces 474 F. Pathwalks
    [思维]挖矿
  • 原文地址:https://www.cnblogs.com/zhhy236400/p/10483994.html
Copyright © 2011-2022 走看看