• java IO其他流


    1.内存操作流,ByteArrayInputStream和 ByteArrayOutputStream

    案例:将小写转化为大写

    /*
     * 内存操作流,将大写字母转化为小写字母(ByteArrayInputStream和 ByteArrayOutputStream)
     */
    	public static void ChangeLowLetterToBigLetter()  throws IOException{
    		String str="he who has a dream is a true man";
    		//直接 将字符串转化为字节数组,放到内存中
    		ByteArrayInputStream in=new ByteArrayInputStream(str.getBytes());
    		//out是直接取得内存中的字节数组
    		ByteArrayOutputStream out=new ByteArrayOutputStream();
    		int count=0;
    		int temp=0;
    		//从内存中一个一个的读字节
    		while((temp=in.read())!=(-1))
    		{
    			char ch=(char)temp;
    			//转化为大写,直接写到内存中  
    			out.write(Character.toUpperCase(ch));
    		}
    	System.out.println(out.toString());
    		
    	}
    

    注意:这里一个ByteArrayInputStream对应一个ByteArryOutputStream ,通过每次读取一个字节的方式,能够很好的控制输入输出

    内容操作流一般使用来生成一些临时信息采用的,这样可以避免删除的麻烦。

    /**
    	 * @param args
    	 * 2.管道流   管道流主要可以进行两个线程之间的通信。 
        *  PipedOutputStream 管道输出流  起点
        *  PipedInputStream 管道输入流  终点
    	 */
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
            Send send=new Send();
            Recive revice=new Recive();
            
            try{
            	//管道接受流实例和管道发送流实例连接
              revice.getIn().connect(send.getOut());
            }
            catch(Exception e)
            {
            	e.printStackTrace();
            }
            //开启两个线程
            new Thread(send).start();
            new Thread(revice).start();
    	}
    
    }
    
    //发送管道流
    class Send implements Runnable {
    	private PipedOutputStream out = null;
    
    	public Send() {
    		this.out = new PipedOutputStream();
    	}
    	public PipedOutputStream getOut()
    	{
    		return this.out;
    	}
    
    	@Override
    	public void run() {
    		// TODO Auto-generated method stub
             String str=" he who has a dream is a true man";
             try
             {
            	 out.write(str.getBytes());
             }
             catch(Exception ex)
             {
            	 ex.printStackTrace();
             }
             try{
            	 out.close();
             }
             catch(Exception ex)
             {
            	 ex.printStackTrace();
             }
    	}
    
    }
    
    /*
     * 接受管道
     */
    class Recive implements Runnable
    {
    	private PipedInputStream in=null;
        public  Recive()
        {
          in =new PipedInputStream();
        }
        
        public PipedInputStream getIn() {
    		return this.in;
    	}
    	@Override
    	public void run() {
    		// TODO Auto-generated method stub
    		try
    		{
    		 int len;
    		 byte[] all=new byte[1024];
    		len=in.read(all);
    		 System.out.println("success:"+new String(all,0,len));
    		}
    		catch(Exception e)
    		{
    			e.printStackTrace();
    		}
    	}
    	
    	
    }
    

    二.打印流

    /*
    	 *1 .打印流
    	 * Printstream
    	 * 直接打印到对应的文件,格式化输出
    	 */
    	public static void PrintStreamTest() throws IOException
    	{
    		 String filePath="G:"+File.separator+"JAVA"+File.separator+"test"+File.separator+"aaa.txt";
             PrintStream printStram=new PrintStream(filePath);
             //下面的方法也能创建一个打印流实例
             //PrintStream printS=new PrintStream(new FileOutputStream(filePath));
             //直接打印到文件
             printStram.println("nihaoma");
             printStram.println("你妹没的");
              //下面是格式化输出
             String name="jackvin";
             String age="12";
             printStram.printf("name:%s 	 age:%s",name,age);
             
             printStram.close();
             
    	}
    
    结果:
    nihaoma
    你妹没的
    name:jackvin   age:12

     二:system.out,system.in,system.err 重定向

    /*
    	 * system.out 重定向,直接写文件
    	 */
    	public static void SystemOutReDirector() throws IOException
    	{
    		String filePath="G:"+File.separator+"JAVA"+File.separator+"test"+File.separator+"aaa.txt";
    		
    		System.out.println("show in console");
    		File file=new File(filePath);
    		
    		PrintStream ps=new PrintStream(new FileOutputStream(file));
    		//将out定义成PrintStream,直接向文件中写入
    		System.setOut(ps);
    		//写文件
    		System.out.println("this sentence will show in the txt");
    	
    	}
    	
    	/*
    	 * system.err重定向,直接写文件
    	 */
    	public static void SysErrReDirector()
    	{
    		String filePath="G:"+File.separator+"JAVA"+File.separator+"test"+File.separator+"aaa.txt";
    		System.err.println("show in the console");
    		try
    		{
    			PrintStream ps =new PrintStream(filePath);
    			System.setErr(ps);
    		}
    		catch(Exception ex)
    		{
    			ex.printStackTrace();
    		}
    	  System.err.println("show in the  txt");
    	
    	}
    
       /*
        * system.in重定向,直接从文件中读取
        */
    	public static void  SysInReadFromFile() {
    		String filePath="G:"+File.separator+"JAVA"+File.separator+"test"+File.separator+"bbb.txt";
    		try {
    			//定义一个输入流对象
    			InputStream in=new FileInputStream(filePath);
    			//修改system.in的读入方式
    			System.setIn(in);
    		} catch (Exception e) {
    			// TODO: handle exception
    			e.printStackTrace();
    		}
    	 byte[] all=new byte[1024];
    	 int count=0;
    	 int temp=0;
    	 try {
    		 while((temp=System.in.read())!=(-1))
    		 {
    			 all[count++]=(byte)temp;
    		 }
    		
    	} catch (Exception e) {
    		// TODO: handle exception
    		e.printStackTrace();
    	}
    	System.out.println(new String(all,0,count));
    		
    	}
    

     三:Scanner类,直接读取文件,输出到console

    /*
    	 * Scanner类,直接读取文件输出到控制台
    	 */
    	public static void  scannerTest() {
    		String filePath="G:"+File.separator+"JAVA"+File.separator+"test"+File.separator+"bbb.txt";
    		try {
    			Scanner scanner =new Scanner(new File(filePath));
    			while(scanner.hasNextLine())
    			{
    				System.out.println(scanner.nextLine());
    			}
    				
    			System.out.println("sfsf");
    			
    		} catch (Exception e) {
    			// TODO: handle exception
    			e.printStackTrace();
    		}
    	
    	}
    

     四:DataOutputStream 和DataInputStream

    /*
    	 * DataOutputStream  输出流
    	 */
    	public static void dataOutputStream()
    	{
    		String filePath="G:"+File.separator+"JAVA"+File.separator+"test"+File.separator+"bbb.txt";
    		try {
    			//定义一个DataOutputStream 对象
    			DataOutputStream out=new DataOutputStream(new FileOutputStream(filePath));
    			
    			String str="hi,this is DataOutputStream write";
    			out.write(str.getBytes());
    			System.out.println("dataoutput sucess!");
    			
    		} catch (Exception e) {
    			// TODO: handle exception
    		}
    	}
    /*
     * DataInputStream 输入流,将DataOutStream 输入到文件的内容,写到控制台
     */
    public static void  dataInputStreamTest() {
    	String filePath="G:"+File.separator+"JAVA"+File.separator+"test"+File.separator+"bbb.txt";
    	try {
    		DataInputStream in=new DataInputStream(new FileInputStream(filePath));
            byte[] all=new byte[1024];
            int count=0;
            int temp=0;
            
            while((temp=in.read())!=(-1))
            {
            	all[count++]=(byte)temp;
            }
            System.out.println(new String(all,0,count));
            
            
    	} catch (Exception e) {
    		// TODO: handle exception
    	}
    

    五:合并流 SequenceInputStream

         /*
          *合并流 SequenceInputStream 
          */
    	public static void sequenceInputStreamTest()
    	{
    		String filePathA="G:"+File.separator+"JAVA"+File.separator+"test"+File.separator+"bbb.txt";
    		String filePathB="G:"+File.separator+"JAVA"+File.separator+"test"+File.separator+"aaa.txt";
    		try {
    			InputStream inA=new FileInputStream(filePathA);
    			InputStream inB=new FileInputStream(filePathB);
    			
    			SequenceInputStream sequenceInputStream=new SequenceInputStream(inA,inB);
    			byte [] all=new byte[1024];
    			int count=0;
    			int temp=0;
    			while((temp=sequenceInputStream.read())!=(-1))
    			{
    			  all[count++]=(byte)temp;	
    			}
    			
    			System.out.println(new String(all,0,count));
    			
    			
    //			sequenceInputStream.read(all);  如何不是一个一个字节的访问,输出的只是inB读入的文字
    //			System.out.println(new String(all));
    			inA.close();
    			inB.close();  
    			
    			
    		} catch (Exception e) {
    			// TODO: handle exception
    		}
    	}
    	
    

    六:压缩http://snowolf.iteye.com/blog/465433

  • 相关阅读:
    报错:maven 程序包org.junit不存在
    Sublime Text 3
    Win10使用技巧
    CookieHelper
    log4net
    文件导出 Aspose
    C# 数字证书加载 X509Certificate2
    前后端文件上传
    WebApi 后端文件传输至远程服务器
    aspnet_regiis.exe用法(备忘非自创)
  • 原文地址:https://www.cnblogs.com/fjsnail/p/3480691.html
Copyright © 2020-2023  润新知