zoukankan      html  css  js  c++  java
  • IO流实现写入规定的acci码值

    因为写入txt格式的话,只能写入字符形式的数据,如果写入int类型的数据,会根据acci码表转化为对应的字符。但是如果写的超出0~127以外的数据的话,将写入最低字节,其他三个字节将抛弃,这也是int强制转化byte类型的结果。

    /**
    	 * 基本方法,每次在文件中写入一个字节
    	 * 如果是多字节发送,write(byte[] b)没有write(byte[] b,int offset,int length)快
    	 * 因为在实际的网络传输中每个tcp分片至少包含40个字节的开销用于路由和纠错
    	 * @param out
    	 * @throws IOException
    	 */
    
    	private static void generateCharacters(FileOutputStream out) throws IOException {
    		int firstPrintableCharacters=33;
    		int numberPrintableCharacters=94;
    		int numberOfCharactersPerLine=72;
    		int start=firstPrintableCharacters;
    		while(true){
    			for(int i=start;i<start+numberOfCharactersPerLine;i++){
    				out.write((i-firstPrintableCharacters)
    						%numberPrintableCharacters+firstPrintableCharacters);
    			}
    			out.write('
    ');
    			out.write('
    ');
    			start=((start+1)-firstPrintableCharacters)%numberPrintableCharacters+firstPrintableCharacters;
    		}
    	}
    	
    	/**
    	 * 在tcp协议中如果进行单字节发送的话,效率不高,因为每次发送一字节会就会进行一遍数据传输,导致协议的开销很大,
    	 * 如果将多字节整合到一个字节数组中进行发送,只需要一次就能发送全部字节,所以效率要高。
    	 * @param out
    	 * @throws IOException
    	 */
    	private static void generateCharactersGood(FileOutputStream out) throws IOException{
    		
    		int firstPrintableCharacters=33;
    		int numberPrintableCharacters=94;
    		int numberOfCharactersPerLine=72;
    		int start=firstPrintableCharacters;
    		byte[] line=new byte[numberOfCharactersPerLine+2];
    		while(true){
    			for(int i=start;i<start+numberOfCharactersPerLine;i++){
    				line[i-start]=(byte) ((i-firstPrintableCharacters)
    						%numberPrintableCharacters+firstPrintableCharacters);
    			}
    			line[72]=(byte)'
    ';
    			line[73]=(byte)'
    ';
    			out.write(line);
    			start=((start+1)-firstPrintableCharacters)%numberPrintableCharacters+firstPrintableCharacters;
    		}
    	}
    

      

  • 相关阅读:
    Oracle 安装报错 [INS-06101] IP address of localhost could not be determined 解决方法输入日志标题
    Linux下安装oracle数据库提示DISPLAY not set. Please set the DISPLAY and try again。
    redhat 关机注销命令详解
    VirtualBox的四种网络连接方式
    修改RedHat的系统显示时间
    insufficient memory to configure kdump(没有足够的内存)解决方法(待验证、待解决)
    xen坑随笔 heartbeat dpkg垃圾数据库清除
    tomcat 监控脚本
    负载均衡随笔
    GIT命令介绍
  • 原文地址:https://www.cnblogs.com/smallbrokenchildwen/p/7147687.html
Copyright © 2011-2022 走看看