第四题:.此题要求用IO流完成

  1. 使用File类在D盘下创建目录myFiles, 并在myFiles目录下创建三个文件分别为:info1.txt, info2.txt, info3.txt 。

代码:

package Test3;

import java.io.File;
import java.io.IOException; public class Test1 {
public static void main(String[] args) {
File file=new File("D:\\myFiles");
if(!file.exists()){
file.mkdirs();
}
for (int i = 1; i <= 3; i++) {
File file2=new File(file,"info"+i+".txt");
try {
file2.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} File[] files=file.listFiles();
for (File file2 : files) {
System.out.println(file2);
} }
}

2.向info1.txt, info2.txt, info3.txt 中分别追加内容“第一个文件内容,千锋欢迎你”,“第二个文件内容,中国移动培训专家”,“第三个文件内容,千锋助你高薪就业”。


代码:

package Test3;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException; public class Test2 {
public static void main(String[] args) {
File file=new File("D:\\myFiles");
File[] files=file.listFiles(); String[] strings={"第一个文件内容,千锋欢迎你","第二个文件内容,中国移动培训专家","第三个文件内容,千锋助你高薪就业"};
FileOutputStream fos=null;
for(int i=0;i<files.length;i++){
try {
fos=new FileOutputStream(files[i]);
fos.write(strings[i].getBytes());
fos.flush();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
if(fos!=null){
try {
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} } }
}

3.把info1.txt , info2.txt,info3.txt 用String类中的方法截取到 文件名字,不包括拓展名,将名字变成大写,并且给文件重命名成为 INFO1.txt,INFO2.txt ,INFO3.txt,并复制到myFiles\txt目录下(须用程序创建txt文件夹)


代码:

package Test3;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException; public class Test3 {
public static void main(String[] args) {
File file=new File("D:\\myFiles");
String[] strings=file.list(); File file2=new File("D:\\myFiles\\txt");
if(!file2.exists()){
file2.mkdirs();
} for (String string : strings) {
if(string.endsWith(".txt")){
//获取文件名
String string2=string.substring(0, 5);
//重命名
File file3=new File(file,string);
file3.renameTo(new File(file,string2.toUpperCase()+".txt"));
//复制新文件到txt文件夹下
FileInputStream fis=null;
FileOutputStream fos=null;
try {
fis=new FileInputStream(file3);
fos=new FileOutputStream(new File(file2,string2.toUpperCase()+".txt"));
byte[] bs=new byte[50];
int count=0;
while((count=fis.read(bs))!=-1){
fos.write(bs, 0, count);
fos.flush();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
if(fis!=null){
try {
fis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(fos!=null){
try {
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
}
}

4.键盘输入一个关键字“千锋”,列出myFiles目录下包含“千锋”关键字的文件


代码:

package Test3;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Scanner; //4.键盘输入一个关键字“千锋”,列出myFiles目录下包含“千锋”关键字的文件(8分)
public class Test4 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("请输入关键字:");
String string=scanner.next(); //读取每个文件内容进行匹配
File file=new File("D:\\myFiles");
FileInputStream fis=null;
File[] files=file.listFiles();
//遍历myFiles下的文件
for (File file2 : files) {
if(file2.isFile()){
// System.out.println(file2);
try {
fis=new FileInputStream(file2);
byte[] bs=new byte[50];
int count=0;
//字符串用于存储文件所有内容
String string2="";
while((count=fis.read(bs))!=-1){
string2+=new String(bs, 0, count);
}
// System.out.println(string2);
//进行匹配
if(string2.contains(string)){
System.out.println(file2+" 包含关键字:"+string);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
if(fis!=null){
try {
fis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
} }
scanner.close(); }
}

5.递归删除myFiles目录,并记录删除的信息,格式为 “INFO1.txt 删除成功(失败) 2015-8-10 10:20:30”.将文件保存到D:\log.txt中,(注意:log.txt文件不要提交)

代码:

package Test3;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat; /**
* 递归删除myFiles目录,并记录删除的信息,格式为 “INFO1.txt 删除成功(失败)
* 2015-8-10 10:20:30”.将文件保存到D:\log.txt中,(注意:log.txt文件不要提交)
* @author Administrator
*
*/
public class Test5 {
public static void main(String[] args) {
File file=new File("D:\\myFiles");
//创建log.txt File file2=new File("D:\\log.txt");
if(!file2.exists()){
try {
file2.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} //调用递归删除
remove(file, file2); } //递归删除myfile文件
public static void remove(File file,File txt){
if(file.isFile()){
boolean isSuccess=file.delete();
long l=System.currentTimeMillis();
//时间格式化
SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String string=format.format(l);
FileOutputStream fos=null;
try {
fos=new FileOutputStream(txt,true);
String pk=isSuccess?"删除成功":"删除失败";
String string2=file.getName()+pk+" "+string;
System.out.println(string2);
fos.write(string2.getBytes());
fos.flush();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
if(fos!=null){
try {
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}else {
File[] files=file.listFiles();
for (File file2 : files) {
remove(file2,txt);
}
}
}
}

第五题.按要求完成如下功能


【1】创建一明星Star类,属性:star_No(明星编号)、star_Name(明星名字)、star_Masterpieces(明星的成名作)、star_Home(明星祖籍)、star_Marriage(明星婚否)、star_Info(明星信息);封要求所有属性封装,重写toString方法。 (4分)


代码:

Star类

package Test4;

import java.io.Serializable;
import java.text.CollationKey;
import java.text.Collator; /**
* 创建一明星Star类,属性:star_No(明星编号)、star_Name(明星名字)、
* star_Masterpieces(明星的成名作)、star_Home(明星祖籍)、star_Marriage(明星婚否)、
* star_Info(明星信息);封要求所有属性封装,重写toString方法。
* @author Administrator
*
*/
public class Star implements Comparable<Star>,Serializable {
private static final long serialVersionUID = 1L; private int star_No;
private String star_Name;
private String star_Masterpieces;
private String star_Home;
private String star_Marriage;
private String star_Info;
public int getStar_No() {
return star_No;
}
public void setStar_No(int star_No) {
this.star_No = star_No;
}
public String getStar_Name() {
return star_Name;
}
public void setStar_Name(String star_Name) {
this.star_Name = star_Name;
}
public String getStar_Masterpieces() {
return star_Masterpieces;
}
public void setStar_Masterpieces(String star_Masterpieces) {
this.star_Masterpieces = star_Masterpieces;
}
public String getStar_Home() {
return star_Home;
}
public void setStar_Home(String star_Home) {
this.star_Home = star_Home;
}
public String getStar_Marriage() {
return star_Marriage;
}
public void setStar_Marriage(String star_Marriage) {
this.star_Marriage = star_Marriage;
}
public String getStar_Info() {
return star_Info;
}
public void setStar_Info(String star_Info) {
this.star_Info = star_Info;
}
@Override
public String toString() {
return "Star [star_No=" + star_No + ", star_Name=" + star_Name + ", star_Masterpieces=" + star_Masterpieces
+ ", star_Home=" + star_Home + ", star_Marriage=" + star_Marriage + ", star_Info=" + star_Info + "]";
}
public Star(int star_No, String star_Name, String star_Masterpieces, String star_Home, String star_Marriage,
String star_Info) {
super();
this.star_No = star_No;
this.star_Name = star_Name;
this.star_Masterpieces = star_Masterpieces;
this.star_Home = star_Home;
this.star_Marriage = star_Marriage;
this.star_Info = star_Info;
}
public Star() {
super();
} //要求按照第一条件star_No明星编号升序排列,第二条件start_Name 降序排序
@Override
public int compareTo(Star o) {
if(this.star_No>o.star_No){
return 1;
}else if(this.star_No<o.star_No){
return -1;
}else {
CollationKey key=Collator.getInstance().getCollationKey(this.star_Name);
CollationKey key2=Collator.getInstance().getCollationKey(o.star_Name);
int num=key.compareTo(key2);
if(num>0){
return -1;
}else if(num<0){
return 1;
}else {
return 0;
}
}
}
// (要求:明星编号和明星姓名和明星成名作相同的为同一明星) @Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((star_Home == null) ? 0 : star_Home.hashCode());
result = prime * result + ((star_Info == null) ? 0 : star_Info.hashCode());
result = prime * result + ((star_Marriage == null) ? 0 : star_Marriage.hashCode());
result = prime * result + ((star_Masterpieces == null) ? 0 : star_Masterpieces.hashCode());
result = prime * result + ((star_Name == null) ? 0 : star_Name.hashCode());
result = prime * result + star_No;
return result;
} @Override
public boolean equals(Object obj) {
if(obj==null){
return false;
}
if(obj==this){
return true;
}
if(obj instanceof Star){
Star star=(Star) obj;
if(this.star_No==star.star_No&&this.star_Name.equals(star.star_Name)&&
this.star_Masterpieces.equals(star.star_Masterpieces)){
return true;
}
}
return false;
} }

【2】 根据下列提供的信息创建Star对象,将每个字符串中的字段所对应的值设置到对象属性中。

(1)star_No:10000001 star_Name:胡军 star_Masterpieces:天龙八部 star_Marriage:true star_Home:北京市Star_Info:胡军出生在北京的一个艺术世家,属于满族镶黄旗。父亲胡宝善是男中音歌唱家,母亲王亦满是话剧演员,伯父是著名的男高音歌唱家胡松华,2013年,担任北京东城区消防形象大使。

(2)star_No:10000002 star_Name:鹿晗 star_Masterpieces:重返20岁star_Marriage:false star_Home:北京市Star_Info:鹿晗(LU HAN),中国男演员、歌手。1990年4月20日出生于北京。2008年赴韩国留学期间在明洞逛街时被韩国SM娱乐公司星探发掘,签约成为旗下练习生。2012年4月以EXO组合主唱、领舞、门面担当身份正式出道,在中外各国迅速获得超高人气。

(3)star_No:10000011 star_Name:孙俪 star_Masterpieces:后宫甄嬛传star_Marriage:true star_Home:上海市 Star_Info:孙俪,本名孙丽,1982年9月26日出生于上海市,中国大陆女演员、歌手。5岁开始学舞蹈,11岁出访国外表演,15岁担任上海警备区文工团文艺兵3年;退伍后进入东方文化学院学习。

(4)star_No:10000101 star_Name:王宝强 star_Masterpieces:天下无贼 star_Marriage:true star_Home:河北省邢台市南和县Star_Info:王宝强,中国内地男演员,1984年5月29日出生于河北省邢台市,6岁时开始练习武术,8岁在嵩山少林寺做俗家弟子,20岁时主演独立电影《盲井》获金马奖最佳新人奖及法国、泰国电影节最佳男主角奖。


【3】创建用于存放明星对象的TreeMap<Star,String>,用于存放上述的几个明星,使用自然排序进行排序,
要求按照第一条件star_No明星编号升序排列,第二条件start_Name 降序排序(5分)

【4】使用HashMap<Star,String>集合进行存储,将Star对象作为键,value值为与该明星有关的作品名。
并遍历输出集合元素(要求:明星编号和明星姓名和明星成名作相同的为同一明星)。(5分)

【5】 要求在上题遍历集合时,要求编程实现在当前项目中,
根据获取的每个具体对象的star_Name为名称创建相应文件,将明星对象进行序列化保存

后面4小问的参考代码如下:

代码:

package Test4;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.HashMap;
import java.util.Set;
import java.util.TreeMap; public class Test1 {
public static void main(String[] args) { //2根据下列提供的信息创建Star对象,将每个字符串中的字段所对应的值设置到对象属性中。
Star star=new Star(10000001, "胡军", "天龙八部", "北京市", "true", "胡军出生在北京的一个艺术世家,属于满族镶黄旗。"
+ "父亲胡宝善是男中音歌唱家,母亲王亦满是话剧演员,伯父是著名的男高音歌唱家胡松华,2013年,担任北京东城区消防形象大使。");
Star star2=new Star(10000002, "鹿晗", "重返20岁", "北京市", "false",
"鹿晗(LU HAN),中国男演员、歌手。1990年4月20日出生于北京。2008年赴韩国留学期间在明洞逛街时被韩国SM娱乐公司星探发掘,签约成为旗下练习生。2012年4月以EXO组合主唱、领舞、门面担当身份正式出道,在中外各国迅速获得超高人气。");
Star star3=new Star(10000011, "孙俪", "后宫甄嬛传", "上海市", "true",
"孙俪,本名孙丽,1982年9月26日出生于上海市,中国大陆女演员、歌手。5岁开始学舞蹈,11岁出访国外表演,15岁担任上海警备区文工团文艺兵3年;退伍后进入东方文化学院学习。");
Star star4=new Star(10000101, "王宝强", "天下无贼", "河北省邢台市南和县", "true",
"王宝强,中国内地男演员,1984年5月29日出生于河北省邢台市,6岁时开始练习武术,8岁在嵩山少林寺做俗家弟子,20岁时主演独立电影《盲井》获金马奖最佳新人奖及法国、泰国电影节最佳男主角奖。"); //3.创建用于存放明星对象的TreeMap<Star,String>,用于存放上述的几个明星,
//使用自然排序进行排序,要求按照第一条件star_No明星编号升序排列,第二条件start_Name 降序排序
//{自然排序处理见Star类}
TreeMap<Star, String> map=new TreeMap<>();
map.put(star, "实力派老演员");
map.put(star2, "偶像派歌手演员");
map.put(star3, "后宫剧大神");
map.put(star4, "草根演员");
Set<Star> set=map.keySet();
for (Star star5 : set) {
System.out.println(star5+" "+map.get(star5));
} //4.使用HashMap<Star,String>集合进行存储,将Star对象作为键,vlaue值为与该明星有关的作品名。
//并遍历输出集合元素(要求:明星编号和明星姓名和明星成名作相同的为同一明星)
//{对hashCode和equals重写见star类}
HashMap<Star, String> map2=new HashMap<>();
map2.put(star, "潜伏");
map2.put(star2, "不知道");
map2.put(star3, "甄嬛传");
map2.put(star4, "士兵突击"); System.out.println(); //5.要求在上题遍历集合时,要求编程实现在当前项目中,
//根据获取的每个具体对象的star_Name为名称创建相应文件,将明星对象进行序列化保存
ObjectOutputStream oos=null;
Set<Star> set2=map.keySet();
for (Star star6 : set2) {
//遍历输出
System.out.println(star6+" "+map.get(star6)); //创建相应的文件,并写入序列化对象
try {
oos=new ObjectOutputStream(new FileOutputStream(new File(star6.getStar_Name()+".txt")));
oos.writeObject(star6);
oos.flush();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
if(oos!=null){
try {
oos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
} }
}

第六大题

写两个线程,一个线程打印1-52,另一个线程答应字母A-Z。打印顺序为12A34B56C……5152Z。通过使用线程之间的通信协调关系。

注:分别给两个对象构造一个对象o,数字每打印两个或字母每打印一个就执行o.wait()。在o.wait()之前不要忘了写o.notify()


参考代码地址:http://blog.csdn.net/baidu_37107022/article/details/71082940

Java阶段性测试--第四五六大题参考代码的更多相关文章

  1. Java阶段性测试--知识点:数组,面向对象,集合、线程,IO流

    #Java基础测试 涉及知识点:数组,面向对象,重载,重写,继承,集合,排序,线程,文件流 一.多项选择题(可能是单选,也可能是多选) 1.下列标识符命名不合法的是(   D  ). A.$_Name ...

  2. Java阶段性测试--第二三大题参考代码

    第二大题: 1.打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于它本身 package Test1; //1.打印出所有的 ...

  3. Java 整体测试重点题 错题积累

    重点题    错题积累 1: 解析: %d:用来设置输出日志的日期和时间 %m:用来输出代码中指定的消息 %n:用来输出一个回车换行符 %l:用来输出日志事件的发生位置 %p:用来输出优先级 %f:用 ...

  4. Android AIDL自动生成Java文件测试

    /******************************************************************************** * Android AIDL自动生成 ...

  5. Java设计模式面试题 01 - 六大原则

    Java设计模式面试题 01 - 六大原则 1. 单一职责原则 Single Responsibility Principle SRP原则 分清职责,接口一定要做到单一职责,方法也要做到,类尽量做到 ...

  6. java面试题汇总(有的题无视即可,没什么实际用途)

    相关概念 面向对象的三个特征 封装,继承,多态,这个应该是人人皆知,有时候也会加上抽象. 多态的好处 允许不同类对象对同一消息做出响应,即同一消息可以根据发送对象的不同而采用多种不同的行为方式(发送消 ...

  7. 20165310_获奖感想与Java阶段性学习总结

    获奖感想与Java阶段性学习总结 一.Learning By Doing ​ 在此之前,其实我并没有想到能够成为小黄杉的第一批成员之一,喜悦之余,也感受到了许多的压力.小黄杉一方面代表了老师对于我这一 ...

  8. java项目测试环境搭建

    java项目测试环境搭建 2019-03-06 13:45:26 木瓜小少年 阅读数 691更多 分类专栏: 测试   版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原 ...

  9. 如何在Java中测试类是否是线程安全的

    通过优锐课的java核心笔记中,我们可以看到关于如何在java中测试类是否线程安全的一些知识点汇总,分享给大家学习参考. 线程安全性测试与典型的单线程测试不同.为了测试一个方法是否是线程安全的,我们需 ...

随机推荐

  1. List<T>对元素的查找。

    要在List<T>中查找特定的元素,可以使用Contains() .IndexOf().LastIndexOf()和BinarySearch()方法.除了 LastIndexOf()是从最 ...

  2. vector介绍

    vector(向量,也可称为容器): C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的. 1.1  ...

  3. DirectFB 之 通过多Window实现多元素处理

    图像 设计 采用多window的方式实现显示,因为每个window可以独立的属性,比如刷新频率,也是我们最关注的 示例 /*************************************** ...

  4. caffe:使用C++来提取任意一张图片的特征(从内存读取数据)

    0x00 关于使用C++接口来提取特征,caffe官方提供了一个extract_features.cpp的例程,但是这个文件的输入是blob数据,即使输入层使用的是ImageData,也需要在depl ...

  5. PHP填补数字前后的0

    PHP数字填补0 经常会遇到这样的问题: 自然数字是0,1,2,3...而我们需要的却是满足多少多少位数的数字,如:001,002. 在ID,编号,学号中我们会经常用到补全前面或者后面的空位(一般为前 ...

  6. 关于quotename的用法

    首先,sqlserver里的标识符有一定的规则,比如  你 create table abc 123(...) 那么中间含有空格,它不是符合规则的. 你会写做 create table [abc 12 ...

  7. centos系统修改网络配置注意事项

    这也是无意之中发现的,我在做一个远程修改工控机网络配置的程序, 网络配置参数/etc/sysconfig/network-scripts/ifcfg-enp1s0下面,当然名字可能不一样ifcfg-e ...

  8. input file图片上传预览效果

    两种方法,方法一: js代码: //头像上传预览 $("#up").change(function() { var $file = $(this); var fileObj = $ ...

  9. 【css笔记】css中的盒模型和三种定位机制(固定定位,绝对定位,浮动)

    html页面上的元素都可以看成是框组成的,框通过三种定位机制排列在一起就过程了我们看到的页面.而框就是盒模型. 盒模型 1.页面上的每个元素可以看成一个矩形框,每个框由元素的内容,内边距,边框和外边距 ...

  10. NancyFx 2.0的开源框架的使用-Forms

    同样的像前面2篇博文一样,每个项目的开始基本都是建个空的Web项目 在NuGet库中安装以下几个NuGet包 Nancy Nancy.Authentication.Forms Nancy.Hostin ...