使用FileChannels和ByteBuffers存储模式 : 安全 « 常规表达式 « Java

En
Java
1. 图形用户界面
2. 三维图形动画
3. 高级图形
4. 蚂蚁编译
5. Apache类库
6. 统计图
7. 
8. 集合数据结构
9. 数据类型
10. 数据库JDBC
11. 设计模式
12. 开发相关类
13. EJB3
14. 电子邮件
15. 事件
16. 文件输入输出
17. 游戏
18. 泛型
19. GWT
20. Hibernate
21. 本地化
22. J2EE平台
23. 基于J2ME
24. JDK-6
25. JNDI的LDAP
26. JPA
27. JSP技术
28. JSTL
29. 语言基础知识
30. 网络协议
31. PDF格式RTF格式
32. 映射
33. 常规表达式
34. 脚本
35. 安全
36. Servlets
37. Spring
38. Swing组件
39. 图形用户界面
40. SWT-JFace-Eclipse
41. 线程
42. 应用程序
43. Velocity
44. Web服务SOA
45. 可扩展标记语言
Java 教程
Java » 常规表达式 » 安全屏幕截图 
使用FileChannels和ByteBuffers存储模式

//Example File
/*       
#Email validator that adheres directly to the specification
#for email address naming. It allows for everything from
#ipaddress and country-code domains to very rare characters
#in the username.
email=^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-
9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-
9]{1,3})(\]?)$

#Matches UK postcodes according to the following rules 1. LN NLL
#eg N1 1AA 2. LLN NLL eg SW4 0QL 3. LNN NLL eg M23 4PJ 4. LLNN NLL
#eg WS14 0JT 5. LLNL NLL eg SW1N 4TB 6. LNL NLL eg W1C 8LQ Thanks
#to Simon Bell for informin ...
zip=^[a-zA-Z]{1,2}[0-9][0-9A-Za-z]{0,1} {0,1}[0-9][A-Za-z]{2}$

#This regular expression matches dates of the form XX/XX/YYYY
#where XX can be 1 or 2 digits long and YYYY is always 4
#digits long.
dates=^\d{1,2}\/\d{1,2}\/\d{4}$

*/

import java.util.Properties;
import java.util.regex.*;
import java.util.*;
import java.io.*;
import java.nio.*;
import java.nio.channels.*;
import java.util.logging.Logger;

public class RegexProperties extends Properties {
  private static Logger log = Logger.getAnonymousLogger();

  public void load(String inStreamthrows IOException,
      PatternSyntaxException {
    load(new FileInputStream(inStream));
  }

  public void load(FileInputStream inStreamthrows IOException,
      PatternSyntaxException {
    FileChannel fc = inStream.getChannel();

    ByteBuffer bb = ByteBuffer.allocate((intfc.size());
    fc.read(bb);
    bb.flip();
    String fileContent = new String(bb.array());

    Pattern pattern = Pattern.compile("^(.*)$", Pattern.MULTILINE);
    Matcher matcher = pattern.matcher(fileContent);

    while (matcher.find()) {
      String line = matcher.group(1);
      if (line != null && !"".equals(line.trim())
          && !line.startsWith("#"&& !line.startsWith("!")) {
        String keyValue[] null;
        if (line.indexOf("="0)
          keyValue = line.split("="2);
        else
          keyValue = line.split(":"2);

        if (keyValue != null) {
          super.put(keyValue[0].trim(), keyValue[1]);
        }
      }
    }
    fc = null;
    bb = null;
  }

  public void store(FileOutputStream out, String header)
      throws UnsupportedOperationException {
    throw new UnsupportedOperationException("unsupported for this class");
  }

  public void putAll(Map t) {
    throw new UnsupportedOperationException("unsupported for this class");
  }
}
           
       
Related examples in the same category
1. 使用正则表达式过滤系读者
2. 读线从字符串使用一个正则表达式
3. 适用于正则表达式的内容文件
www.java2java.com | Contact Us
Copyright 2010 - 2030 Java Source and Support. All rights reserved.
All other trademarks are property of their respective owners.