JAVA IO流_3

                                           JAVA IO流_3                                   

   一. 随机流

       RandomAccessFile

         不属于io的成员     
        可以直接操作数据

        特性:带有文件指针

 	//File f=new File("D"+File.separator+"rand.txt");
		//RandomAccessFile rf=new RandomAccessFile(f, "rw");//四种模式
      	//method1(rf);
		RandomAccessFile rand2=new RandomAccessFile(new File("D:\\char02.txt"), "rw");
		int len=0;
		byte[] by=new byte[1024];
		while((len=rand2.read(by))!=-1){
			System.out.println(new String(by,0,len));
			rand2.write(by,0,len);
		}
	}
//
//	public static void method1(RandomAccessFile rf) throws IOException {
//		rf.seek(0);
//		System.out.println(rf.readLine());
//		rf.writeUTF("how are you");
//		System.out.println(rf.getFilePointer());
//		rf.writeInt(10);//4
//		rf.writeBoolean(false);  //1
//		rf.writeChar('a');//2
//		System.out.println(rf.getFilePointer());
//		rf.seek(0);   //绝对定位,改变文件指针
//		System.out.println(rf.readInt());
//	}
}


      

    二.配置文件的使用

         一些项目常用的固定的参数信息,通常我们会建一个文件进行存储
 * Properties 继承hashtable,实现map集合的。
        存放的数据信息是键值对
        properties 存放的键值对都是字符串的

        Properties

       

Properties p=new Properties();
		
		InputStream in=new FileInputStream("test.properties");
		//解决中文乱码的问题
		//InputStreamReader bin=new InputStreamReader(in);
		p.load(in); //将流里面的配置信息加载进pro的列表 
		
		String name=p.getProperty("name");
		String age=p.getProperty("age");
		String gender=p.getProperty("gender");
		System.out.println(name+"=="+age+"=="+gender);
		
		//迭代器的方式
		Iterator<String> it= p.stringPropertyNames().iterator();
		while(it.hasNext()){
			String key=it.next();
			System.out.println(key+":"+p.getProperty(key));
		}
		//往配置文件里面写内容
		FileOutputStream fou=new FileOutputStream("test.properties");
		
		//解决中文乱码问题
		OutputStreamWriter bo=new OutputStreamWriter(fou);
		p.setProperty("id", "2017");   //添加键值对数据
		//out 输出流     comments 注释
		p.store(fou, "this is my new add");
		bo.close();
		
	}


    三.与装饰者模式相关

        1.包含要增强类的对象引用

        2.扩展需要增强的方法

        

public class Demo01 {
	public static void main(String[] args) throws IOException {
		//BufferedReader bReader=new BufferedReader(new FileReader(new File("D:\\message.txt")));
//		String str=null;
		int num=0;
//		while((str=bReader.readLine())!=null){
//			num++;
//			//System.out.println(num+":"+str);
//		}
		//将bufferRead的readLine()扩展功能
		
		File f=new File("D:\\message.txt");
		FileReader fr=new FileReader(f);
		BufferedReader br=new BufferedReader(fr);
		//先添加行号
		myBuffer my=new myBuffer(br);
		//myBuffer mb=new myBuffer(br);
		String str1=null;
		while((str1=my.readLine())!=null){
			System.out.println(str1);
		}
	}
	//装饰者设计模式
	/*1.包含要增强类的对象引用
	 *2.扩展需要增强的方法
	 * 
	 * 
	 */
}
//提升功能的类 
class myBuffer extends BufferedReader{
	int num=0;
	public BufferedReader br; //1.包含要增强类的对象引用
	public myBuffer(BufferedReader in) {
		super(in);
		this.br=in;
	}
	public String readLine() {
		String str=null;
		try {
			str=br.readLine();
			if(str!=null){
			num++;
			return num+":"+str;	
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
		return str;
	}
	
}


     


   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值