• IO(二)



    字节流与字符流区别


    在进行字符流操作的时候会使用到缓冲区,而字节流操作的时候是不会使用缓冲区的。



    操作字符用字符流比较方便,应为字节流是以字节为单位传输的,一个汉字占两个字节。半个半个操作容易出错,出现乱码。


    字符流操作字符文件

    import java.io.*;
    class ReaderDemo
    {
    	public static void main(String[] args)throws Exception
    	{
    		File f=new File("ReaderDemo.java");
    		read(f);
    	}
    	public static void read(File f)throws Exception
    	{
    		Reader r=new FileReader(f);
    		
    		
    		
    		
    		
    		char[] c=new char[2];
    		int len=0;
    		
    			while (r.read(c)!=-1)
    			{
    				
    				System.out.print(new String(c,0,c.length));
    				
    			}
    		
    	
    		
    			r.close();            
    		
    	}
    }

    视频、图片、音乐用字节流操作更为方便,因为这文件都是以字节方式存储的。



    使用字节流复制图片



    import java.io.*;
    class PictureCopy
    {
    	public static void main(String[] args)throws Exception
    	{
    		File f1=new File("Emma.jpg");
    		File f2=new File("Emma.jpg");
    		copy(f1,f2);
    	}
    	public static void copy(File f1,File f2)throws Exception         //将文件1,复制到文件2。
    	{
    		InputStream is=new FileInputStream(f1);
    		OutputStream os=new FileOutputStream(f2);
    		byte[] buff=new byte[1024];
    		
    		while(is.read(buff)!=-1)
    		{
    			os.write(buff);
    		}
    	}
    }



    字节转字符流

    FileWrite和FileReader分别是OutputStreamWriter和InputStreamReader的直接子类,所以无论使用字节流还是字符流实际上在内存中最终都是通过字节的形式来操作流。





    内存操作流

    输入输出位置为内存,直接操作磁盘文件很耗性能,使用内存流可以提升性能


    import java.io.*;
    class CharArrayDemo
    {
    	public static void main(String[] args)throws Exception
    	{
    		String s="中华人民共和国";
    		CharArrayWriter cw=new CharArrayWriter();
    		cw.write(s);
    		char[] ch=cw.toCharArray();
    		CharArrayReader cr=new CharArrayReader(ch);
    		char[] c=new char[1024];
    		while(cr.read(c)!=-1)
    		{
    			System.out.println(c);
    		}
    	}
    }




    打印流

    import java.io.*;

    import java.io.*;
    
    
    public class PrintDemo {
    	public static void main(String[] args) throws Exception {
    
    		PrintStream ps = new PrintStream("abc.txt");	//在abc.txt
    														//打印
    		ps.println("abc");
    		ps.println(123);
    		ps.println(false);
    		ps.println();
    
    		ps = System.out;                             //System.out其实也是一个文件
    		ps.println("fgdfwef");
    		
    		pr = new PrintWriter(System.out,true);          //true参数为是否刷新
    		pr.println(false);
    		pr.println("asdasdasd");
    		pr.println(123123);
    		
    	}
    }


  • 相关阅读:
    AWS研究热点:BMXNet – 基于MXNet的开源二进神经网络实现
    python数字图像处理(19):骨架提取与分水岭算法
    深度学习基石:一篇文章理解反向传播
    Densely semantically aligned person re-identification
    NPU TPU
    滤波、形态学腐蚀与卷积(合集)
    当神经网络撞上薛定谔:混合密度网络入门
    ubuntu 上配置端口转发
    插值法
    Linux终端复用神器-Tmux使用梳理
  • 原文地址:https://www.cnblogs.com/lisisong/p/5122620.html
Copyright © 2020-2023  润新知