1.编写一个程序,将一个目录及子录下的所有txt类型的文件中的内容合并到若干个新的文本文件中,当第一个新产生的文件中存储的内容达到1Mbytes时,剩下的内容存储到第二个新的文件中,依次往下,新产生的文本文件名依次为1.txt、2.txt...。
package cn.com.io;
import java.io.File;
import java.io.RandomAccessFile;
public class TxtFileTest {
private static int buf= 1024*1024-1;
private StringBuilder conten = new StringBuilder();
public static void main(String[] args) {
File file = new File("China");
TxtFileTest t = new TxtFileTest();
t.getText(file);
String str = new String(t.conten);
try {
int i=0;
int count=1;
String strnew ="";
int len = str.length();
RandomAccessFile ra = null;
while(i<len){
if(i==0){
ra = new RandomAccessFile(count+".txt", "rw");
}else if(strnew.getBytes().length> buf){
ra.writeUTF(strnew);
System.out.println(strnew);
strnew ="";
count++;
ra = new RandomAccessFile(count+".txt", "rw");
}
strnew +=str.charAt(i);
i++;
if(i==len){
System.out.println(strnew);
ra.writeUTF(strnew);
}
}
System.out.println("write OK!");
} catch (Exception e) {
e.printStackTrace();
}
}
public void getText(File f){
File file[] = f.listFiles();
for(File dir : file){
if(dir.isDirectory()){
getText(dir);
}else{
if(dir.getName().contains(".txt")){
try {
RandomAccessFile raf = new RandomAccessFile(dir, "r");
String strLine = null;
while((strLine=raf.readLine())!=null){
conten.append(new String(strLine.getBytes("ISO-8859-1"),"utf8")+"\n");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
}
2.叙述什么是流,什么是节点流,什么是包装类
流是字节序列的抽象概念,文件是数据的静态存储形式,而流是指数据传输时的形态
流类分为两个大类:节点流类和过滤流类(也叫处理流类)
节点流:从特定的地方读写的流类,例如:磁盘或一块内存区域。
过滤流:使用节点流作为输入或输出。过滤流是使用一个已经存在的输入流或输出流连接创建的
包装类:通过完成某个特殊功能的类,称为包装类或者称为过滤流类
3.编写一个函数,把StringRead输入流中所有英文变成大写字母,并将结果写入到一个StringWriter输出流对象中。然后,用这个函数将一个字符串中的所有字符转换成大写。
package cn.com.io;
import java.io.StringReader;
import java.io.StringWriter;
public class StringReadTest {
public static void main(String[] args) throws Exception {
String str = "Welcome to China!";
StringReader sr = new StringReader(str);
char buf[] = new char[1024];
sr.read(buf, 0, str.length());
StringWriter sw = new StringWriter();
sw.write(new String(buf).toUpperCase());
System.out.println(sw.toString());
sw.close();
sr.close();
}
}
4.字符编码问题:
package cn.com.io;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class InputReader {
public static void main(String[] args) throws Exception {
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
String strLine = br.readLine();
for(int i=0;i<strLine.length();i++){
System.out.println(Integer.toHexString((int)strLine.charAt(i)));
}
isr.close();
System.out.println(new String(new String(strLine.getBytes("gbk"),"utf8")));
}
}
5.判断身份证:要么是15位,要么是18位,最后一位可以为字母,并写程序提出其中的年月日。
package cn.com;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String[] args) {
String[] strs = {"130681198712092019", "13068119871209201x",
"13068119871209201", "123456789012345", "12345678901234x",
"1234567890123"};
Pattern p1 = Pattern.compile("(\\d{17}[0-9a-zA-Z]|\\d{14}[0-9a-zA-Z])");
for (int i = 0; i < strs.length; i++) {
Matcher matcher = p1.matcher(strs[i]);
System.out.println(strs[i] + ":" + matcher.matches());
// System.out.println(strs[i] + ":" +Pattern.matches("(\\d{17}[0-9a-zA-Z]|\\d{14}[0-9a-zA-Z])",strs[i]));
if(!matcher.matches()){
strs[i] = "";
}
}
Pattern p2 = Pattern.compile("\\d{6}(\\d{8}).*"); // 用于提取出生日字符串7位到第12位为身份证为日期类型
Pattern p3 = Pattern.compile("(\\d{4})(\\d{2})(\\d{2})");// 用于将生日字符串进行分
for (int i = 0; i < strs.length; i++) {
Matcher matcher = p2.matcher(strs[i]);
boolean b = matcher.find();
if (b) {
String s = matcher.group(1); //()用作分组
Matcher matcher2 = p3.matcher(s);
if (matcher2.find()) {
System.out
.println("生日为" + matcher2.group(1) + "年"
+ matcher2.group(2) + "月"
+ matcher2.group(3) + "日");
}
}
}
}
}
6.图片附件匹配,正则捕获页面地址
package cn.com;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String[] args) {
String path = ".*src=((.+)\\.([a-z]+))*.";
String str="图片<img src=\"http://127.0.0.1/tun2/a.jpg\"/> <a href=\"155225\"/>lllll</a><img src=\"http://127.0.0.1/tun2/b.gif\"/>";
Pattern p1 =Pattern.compile(path);
Matcher matcher =p1.matcher(str);
boolean b = matcher.find();
while(b){
System.out.println(matcher.group(1).replaceAll("(')|(\")",""));
str=str.replaceAll("src="+matcher.group(1), "");
matcher =p1.matcher(str);
b = matcher.find();
}
}
}
分享到:
相关推荐
在本文档中,美团大众点评的高级工程师罗泽响分享了关于美团iOS客户端构建过程中的思考和实践经验。...通过这些思考与实践,我们可以更好地理解如何打造一个高效、稳定且易于维护的移动应用客户端。
在标题中提到的“智慧商业思考与实践”,结合内容部分的描述和标签,我们可以提炼出以下知识点: 1. 数据在企业决策中的作用:文章多次强调了“数据改变企业决策”,这表明上海大悦城在其商业运营中充分运用了数据...
朱常波在其文章《中国联通网络安全战略的思考与实践》中,深入分析了中国联通面临的网络安全形势,并提出了相应的战略思考与实践路径。 首先,文章强调了网络安全上升为国家战略的重要性。随着5G、物联网、人工智能...
不过,根据标题《新时代教师专业发展的思考与实践》和描述中出现的“36STEM”,可以推测文档可能涉及到新时代背景下的教师发展,以及STEM教育(即科学Science、技术Technology、工程Engineering和数学Mathematics)...
四招破解三角形作高的难点——“三角形作高”教学策略改进的思考与实践收集.pdf
大数据的思考与实践
新阅读的理性思考与实践探索,作为语文教学改革的新趋向,强调将阅读教学与学生的主体性相结合,追求个性化体验和深度思考。本文将深入探讨新阅读教学的核心理念,并对其实践策略进行分析。 首先,新阅读教学理念...
认证层面 保证每台设备预制不同密钥,用户绑定产生唯一关联性的token,利用密钥与token的关系防止越权操作问题。 通讯层面 要做流量加密与数据签名。 硬件层面 尽可能的把调试接口关掉,并且引入安全芯片,安全存储...
网络安全分析与情报大会,PPT分享 ,演讲者靳晓飞,
《新时代教师专业发展的思考与实践》的心得体会体现了当前教师职业发展的重要方向和实践策略,以下是详细的总结与解读: 1.终身学习与观念更新 新时代对教师提出了“终身学习”的要求,每位教师都必须树立这一观念...
在素描教学的思考与实践中,教师的反思和实践同样重要。教师需要根据学生的实际情况,灵活调整教学策略,让每位学生都能在课堂中获得成长。对于不同年龄和能力的学生,教师更应耐心地提供指导,帮助他们形成有效的...
综上所述,电子信息类学科导论课程的教学思考与实践,不仅仅是对教学方法的改革,更是对传统教育观念的挑战与突破。这种教学模式强调学生的主体地位,强化与社会、与校友的联系,以及学生对未来职业生涯规划的重视。...
OpenStacK峰会PPT
《基于Matlab的密码编码教学思考与实践》探讨了在信息安全教育中如何有效教授密码编码课程,特别是面对数学理论要求较高的挑战。随着社会对信息安全需求的增长,密码学成为了许多专业课程的核心,然而其复杂的理论和...
"《C语言程序设计》精品课程建设的思考与实践" 《C语言程序设计》精品课程建设的思考与实践是桂林航天工业高等专科学校的一门精品课程,本文对精品课程建设的意义及特色进行了阐述,并对桂林航天工业高等专科学校...
中国银行网络安全体系建设思考与实践 基于中国银行网络安全体系建设的思考与实践,以下是从该文件中生成的相关知识点: 一、加强顶层设计,完善信息安全治理机制 * 建立信息安全管理策略、制度规范和技术标准 * ...
【DevOps的系统性思考与实践】 DevOps是一种旨在促进开发和运维团队之间协作与沟通的文化、实践和工具集合,以提高软件交付的速度和质量。在这个非线性的世界里,理解并应用系统性思考对于成功实施DevOps至关重要。...
因此,对大学语文课程进行改革思考与实践,已成为教育者们急需解决的问题。本篇探讨将着重分析如何改进高职院校的大学语文课程,以及理论与实践相结合的具体策略。 首先,文章对“有效学习”进行了定义,认为有效...
SQL Server 云化思考与实践 本文档主要围绕 SQL Server 云化的思考与实践进行展开,涵盖了云化的优势、产品形态、系统架构、市场与趋势、高可用性、自动备份、安全系统、数据库服务可用性保障、离线诊断等多个方面...