zoukankan      html  css  js  c++  java
  • java 之 IO

    浅析理论:

    一、IO概述(input/output)
    	1、输入输出流,字符字节流,字节流一般带Stream,字符流一般是Reader和Writer
    	2、所有文件都是二进制序列,在java中使用byte[]可以表示文件内容,其中文本文件内容可以用char[]表示
    	3、需要关闭流close()
    二、四大顶层抽象类
    	1、InputStream字节输入流
    		int read();//读到末尾,返回-1
    		read(byte[] buff);//最多读取buff.length长度个
    		read(byte[] buff, int off, int len);//读取到的数据,第一个保存到buff[off]中,最多读取len个
    	2、OutputStream字节输出流
    		write(int b);//输出一个字节
    		write(byte[] buff);//批量输出字节,输出个数为buff.length
    		write(byte[] buff, int off, int len);// 从buff[off]开始输出,输出长度为len
    	3、Reader
    		int read();
    		int read(char[] cbuf);
    		int read(char[] cbuf, int off, int len);
    		//对于文本文件的读入一般是以行为单位
    	4、Writer
    		void write(char[] cbuf);
    		void writer(char[] cbuf, int off, int len);
    		void writer(int a);
    		void writer(String str);
    		coud writer(String str, int off, int len);
    三、各种实现类
    	1、InputStream
    		FileInputStream
    		ByteArrayInputStream
    		ObjectInputStream
    	2、OutputStream
    		FileOutputStream
    		ByteArrayOutputStream
    		ObjectOutputStream
    	3、Reader
    		FileReader(x)
    		*BufferedReader
    		InputStreamReader
    	4、Writer
    		*PrintWriter
    		FileWriter(x)
    		OutputStreamWriter
    四、非文本文件,比如:图片、视频、exe文件等
    	文件内容一般使用byte[]表示,一般使用字节相关流来操作,比如FileInputStream、FileOutputStream,使用while循环
    五、文本文件,比如:txt、html、xml
    	一般使用字符操作流,常用一行一行读取操作
    	文本文件的操作关键点是主意文件的字符编码
    	注:要使用和文件一样的字符编码读入,否则会出现乱码
    	1、读入:创建带缓冲的输入字符流【存在内存中】
    		FileInputStream fis = new FileInputStream("F:/a.txt");
    		InputStreamReader isr = new InputStreamReader(fis, "utf-8");
    		BufferedReader r = new BufferedReader(isr);
    	2、一行一行的读入
    		String line = null;
    		while((line=r.readLine())!=null) {  }
    	3、写入:创建BufferedWriter对象
    		FileOutputStream fos = new FileOutputStream("f:/a.txt", true);//true表示是否追加
    		OutputStreamWriter osw = OutputStreamWriter(fos, "utf-8");
    		BufferedWriter bw = BufferedWriter(osw);
    	4、一行一行的写入
    		bw.Write(String s);
    		bw.newLine();
    六、读取控制台
    	System.in;
    		
    

      

    浅析案例:

    package com.gongxy;
    
    import java.io.*;
    
    /**
     * @author gongyg
     * @date 2020/9/3 14:04
     */
    public class IOTest {
        public static void main(String[] args) throws Exception{
            //copyPhotoMethod();
            copyTextMethod();
        }
    
        /*
        复制图片
         */
        static void copyPhotoMethod() throws Exception{
            //读入
            FileInputStream fis = new FileInputStream("g:/测试/测试a/a.png");
            //写入
            FileOutputStream fos = new FileOutputStream("g:/测试/测试B/b.png");
    
            int line;
            while((line = fis.read()) != -1){
                fos.write(line);
            }
            fis.close();
            fos.close();
        }
    
        /*
        复制文本文件
         */
        static void copyTextMethod() throws Exception{
            //读入
            FileInputStream fis = new FileInputStream("g:/测试/测试a/a.txt");
            InputStreamReader isr = new InputStreamReader(fis, "utf-8");
            BufferedReader br = new BufferedReader(isr);
    
            FileOutputStream fos = new FileOutputStream("g:/测试/测试B/b.txt");
            OutputStreamWriter osw = new OutputStreamWriter(fos, "utf-8");
            BufferedWriter bw = new BufferedWriter(osw);
    
            String line;
            while((line = br.readLine()) != null){
                bw.write(line);
                bw.newLine();
            }
            br.close();
            bw.close();
        }
    }
    

      

  • 相关阅读:
    Oracle中merge into的使用
    ORACLE闪回操作 .
    Xmanager远程连接rel5 linux
    ORACLE EXPDP/IMPDP命令使用详细 .
    Oracle Hint
    Oracle中Union与Union All的区别
    关于文件不能访问,IIS提示MIME类型没有错误的解决方法
    当葱头碰上豆瓣酱时
    唯美之希望
    【出行贴士】全国旅游最佳时间
  • 原文地址:https://www.cnblogs.com/gygtech/p/13608194.html
Copyright © 2011-2022 走看看