更新程序:
-----------------------------------------------------------------------------------------------------------
当前目录下新建config.xml文件:
文件内容:
com.pointbase.jdbc.jdbcUniversalDriver //driver信息
jdbc:pointbase:server://localhost:9092/test //url信息
PBPUBLIC //数据库user
PBPUBLIC //数据库password
select id ,name ,age ,address from test //sql语句,用来查询
select.csv //查询结果的输出文件名
insert into test values('0011','sandy','25','shanghai')
insert.csv
update test set address = '上海'
update.csv
delete from test where id = '0008'
delete.csv
--------------------------------------------------------------------------------------------------------
新建一个.java文件,专门用来解析xml,这里我用的是开源的工具jdom,现在比较流行
新建文件:XmlParse.java 在同一个package内
--------------------------------------------------------------------------------------------------------
package ConnectionTest;
import java.io.IOException;
import java.util.HashMap;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
public class XmlParse {
private HashMap configTable= new HashMap();
public HashMap parseXML() throws JDOMException, IOException{
SAXBuilder builder = new SAXBuilder();
Document readDoc = builder.build("src.test/ConnectionTest/config.xml");
Element config = readDoc.getRootElement();
System.out.println(config.getName());
Element e = config.getChild("DBConfig");
HashMap dbConfig = new HashMap();
configTable.put("dbconfig_driver",e.getChildText("driver"));
configTable.put("dbconfig_url",e.getChildText("driver"));
configTable.put("dbconfig_user",e.getChildText("user"));
configTable.put("dbconfig_password",e.getChildText("password"));
HashMap dbOper = new HashMap();
e = config.getChild("DBOperation");
Element c = e.getChild("Select");
configTable.put("dboperation_selectSQL",c.getChildText("SQL"));
configTable.put("dboperation_selectText",c.getChildText("Text"));
c = e.getChild("Insert");
configTable.put("dboperation_insertSQL",c.getChildText("SQL"));
configTable.put("dboperation_insertText",c.getChildText("Text"));
c = e.getChild("Update");
configTable.put("dboperation_updateSQL",c.getChildText("SQL"));
configTable.put("dboperation_updateText",c.getChildText("Text"));
c = e.getChild("Delete");
configTable.put("dboperation_deleteSQL",c.getChildText("SQL"));
configTable.put("dboperation_deleteText",c.getChildText("Text"));
return configTable;
}
}
--------------------------------------------------------------------------------------------------------
最后是主程序修改:
--------------------------------------------------------------------------------------------------------
package ConnectionTest;
import java.io.BufferedWriter;
//import java.io.File;
//import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import org.jdom.JDOMException;
public class ContactTest {
private Connection conn = null;
private int flag;
private HashMap config = new HashMap(); //存放从config.xml中得到的配置信息
static final String LINE_SEPARATOR = System.getProperty("line.separator");
/*
* 增加了构造器,得到解析后的xml的配置信息列表
*/
public ContactTest() throws JDOMException, IOException{
XmlParse xml = new XmlParse();
config = xml.parseXML();
}
public void getConnection(){
try{
/*
* 修改了程序,通过从配置文件中取得数据库信息
*/
/*
File file = new File("./src/test/ConnectionTest/config.properties"); //确定你的目录路径
Properties props = new Properties();
props.load(new FileInputStream(file));
String JDBC_URL = props.getProperty("db_url");
String JDBC_DRIVER= props.getProperty("db_driver");
String USER = props.getProperty("db_user");
String PASSWORD = props.getProperty("db_password");
*/
String JDBC_URL = (String)config.get("dbconfig_url");
String JDBC_DRIVER= (String)config.get("dbconfig_driver");
String USER = (String)config.get("dbconfig_user");
String PASSWORD = (String)config.get("dbconfig_password");
Class.forName(JDBC_DRIVER).newInstance();
conn = DriverManager.getConnection(JDBC_URL,USER,PASSWORD);
System.out.println("connection success-------------");
}catch(Exception e){
e.printStackTrace();
}
}
public void closeConnection() throws SQLException{
if(this.conn != null){
conn.close();
}
}
public void getResult(int flag,Collection col) throws IOException{
String name = null;
if(flag == 0){
System.out.println("输出查询信息");
name = (String)config.get("dboperation_selectText"); //从配置中得到文件名,不再是固定文件名了
WriterOut(name,col);
}else if(flag == 1){
System.out.println("输出插入信息");
name = (String)config.get("dboperation_insertText");;
WriterOut(name,col);
}else if(flag == 2){
System.out.println("输出修改信息");
name = (String)config.get("dboperation_updateText");;
WriterOut(name,col);
}else if(flag == 3){
System.out.println("输出删除信息");
name = (String)config.get("dboperation_deleteText");;
WriterOut(name,col);
}else{
System.out.println("标志码输入错误");
}
}
public void WriterOut(String name,Collection list) throws IOException{
String path = "d:/"+name;
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(path)));
int count = list.size();
String csvData[] = new String[count];
Iterator it = list.iterator();
int i = 0;
while(it.hasNext()){
String temp = (String)it.next();
System.out.println(temp);
csvData[i] = temp;
i++;
}
for(int j = 0;j < csvData.length;j++)
{
writer.write(csvData[j] + LINE_SEPARATOR);
}
writer.close();
}
public void SelectDB(){
try{
getConnection();
Statement stmt = this.conn.createStatement();
String SQL = (String)config.get("dboperation_selectSQL");
ResultSet rs = stmt.executeQuery(SQL);
Collection col = new ArrayList(); //集合,用来存放数据库信息
ResultSetMetaData ss = rs.getMetaData();
int count = ss.getColumnCount();
String temp = "";
for(int j = 1; j <= count; j++){
System.out.print(ss.getColumnName(j)+" ");
if(j == count){
temp = temp + ss.getColumnName(j);
}else{
temp = temp + ss.getColumnName(j)+",";
}
}
col.add(temp);
System.out.println(" ");
while(rs.next()){
temp = "";
for (int i = 1; i <= count;i++){
System.out.print(rs.getString(i)+" ");
if(i == count){
temp = temp + "\""+ rs.getString(i) + "\"";
}else{
temp = temp + "\""+ rs.getString(i) + "\",";
}
}
col.add(temp); //
System.out.println(" ");
}
getResult(0,col);
closeConnection();
}catch(Exception e){
e.printStackTrace();
}
}
public void InsertDB(){
try{
getConnection();
String SQL = (String)config.get("dboperation_insertSQL");
PreparedStatement pstmt = this.conn.prepareStatement(SQL);
ResultSet rs = pstmt.executeQuery();
conn.commit();
SQL = (String)config.get("dboperation_selectSQL");;
Statement stmt = this.conn.createStatement();
rs = stmt.executeQuery(SQL);
ResultSetMetaData ss = rs.getMetaData();
int count = ss.getColumnCount();
Collection col = new ArrayList();
String temp = "";
for(int j = 1; j <= count; j++){
System.out.print(ss.getColumnName(j)+" ");
if(j == count){
temp = temp + ss.getColumnName(j);
}else{
temp = temp + ss.getColumnName(j)+",";
}
}
col.add(temp);
System.out.println(" ");
while(rs.next()){
temp = "";
for (int i = 1; i <= count;i++){
System.out.print(rs.getString(i)+" ");
if(i == count){
temp = temp + "\""+ rs.getString(i) + "\"";
}else{
temp = temp + "\""+ rs.getString(i) + "\",";
}
}
col.add(temp);
System.out.println(" ");
}
getResult(1,col);
closeConnection();
}catch(Exception e){
e.printStackTrace();
}
}
public void UpdateDB(){
try{
getConnection();
String SQL = (String)config.get("dboperation_updateSQL");
PreparedStatement pstmt = this.conn.prepareStatement(SQL);
ResultSet rs = pstmt.executeQuery();
conn.commit();
SQL = (String)config.get("dboperation_selectSQL");
Statement stmt = this.conn.createStatement();
rs = stmt.executeQuery(SQL);
ResultSetMetaData ss = rs.getMetaData();
int count = ss.getColumnCount();
Collection col = new ArrayList();
String temp = "";
for(int j = 1; j <= count; j++){
System.out.print(ss.getColumnName(j)+" ");
if(j == count){
temp = temp + ss.getColumnName(j);
}else{
temp = temp + ss.getColumnName(j)+",";
}
}
col.add(temp);
System.out.println(" ");
while(rs.next()){
temp = "";
for (int i = 1; i <= count;i++){
System.out.print(rs.getString(i)+" ");
if(i == count){
temp = temp + "\""+ rs.getString(i) + "\"";
}else{
temp = temp + "\""+ rs.getString(i) + "\",";
}
}
col.add(temp);
System.out.println(" ");
}
getResult(2,col);
closeConnection();
}catch(Exception e){
e.printStackTrace();
}
}
public void DeleteDB(){
try{
getConnection();
String SQL = (String)config.get("dboperation_deleteSQL");
PreparedStatement pstmt = this.conn.prepareStatement(SQL);
ResultSet rs = pstmt.executeQuery();
conn.commit();
SQL = (String)config.get("dboperation_selectSQL");
Statement stmt = this.conn.createStatement();
rs = stmt.executeQuery(SQL);
ResultSetMetaData ss = rs.getMetaData();
int count = ss.getColumnCount();
Collection col = new ArrayList();
String temp = "";
for(int j = 1; j <= count; j++){
System.out.print(ss.getColumnName(j)+" ");
if(j == count){
temp = temp + ss.getColumnName(j);
}else{
temp = temp + ss.getColumnName(j)+",";
}
}
col.add(temp);
System.out.println(" ");
while(rs.next()){
temp = "";
for (int i = 1; i <= count;i++){
System.out.print(rs.getString(i)+" ");
if(i == count){
temp = temp + "\""+ rs.getString(i) + "\"";
}else{
temp = temp + "\""+ rs.getString(i) + "\",";
}
}
col.add(temp);
System.out.println(" ");
}
getResult(3,col);
closeConnection();
}catch(Exception e){
e.printStackTrace();
}
}
public void excute(int tag){
if(tag == 0){
System.out.println("进行查询操作");
SelectDB();
}else if(tag == 1){
System.out.println("进行添加操作");
InsertDB();
}else if(tag == 2){
System.out.println("进行修改操作");
UpdateDB();
}else if(tag == 3){
System.out.println("进行删除操作");
DeleteDB();
}else{
System.out.println("标志码输入错误");
}
}
public static void main(String[] args) throws JDOMException, IOException
{
ContactTest ct = new ContactTest ();
ct.flag = 0; //0-查询;1-添加;2-修改;3-删除
ct.excute(ct.flag);
}
}
为了便于你更好理解这些程序,我增加了注释,建议使用editplus来看,这样比较好区分注释
config.xml:
----------------------------------------------------------------------------------------------------------
com.pointbase.jdbc.jdbcUniversalDriver
jdbc:pointbase:server://localhost:9092/test
PBPUBLIC
PBPUBLIC
select id ,name ,age ,address from test
select.csv
insert into test values('0011','sandy','25','shanghai')
insert.csv
update test set address = '上海'
update.csv
delete from test where id = '0008'
delete.csv
XmlParse.java 增加注释:
-----------------------------------------------------------------------------------------------------------
package ConnectionTest;
import java.io.IOException;
import java.util.HashMap;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
/*
* 对xml进行解析,从xml中拿到所有的配置信息,放在集合中,采用HashMap集合方式
* HashMap是采用key = value的方式存放的,所以可以通过对应的key值得到相应的配置信息
* 这个和xml的标签和标签内容是一一对应的,例如public是标签,那么在
* HashMap中这配置信息的就可以存放为,key = "user",value = "public"来存放
* 具体的参照API文档
*/
public class XmlParse {
private HashMap configTable= new HashMap(); //生成一个HashMap,用来存放所有的配置信息
/*
* 方法parseXML,具体执行解析xml文件
* 返回一个HashMap,就是将解析完成的含有配置信息的HashMap返回
*/
public HashMap parseXML() throws JDOMException, IOException{
//固定格式,先生成解析器,再建立Document
SAXBuilder builder = new SAXBuilder();
//将你要解析的xml文件导入,注意文件的路径,总是以工程文件的根目录为起点的
Document readDoc = builder.build("src.test/ConnectionTest/config.xml");
//Element为xml中元素节点,这里通过getRootElement()方法得到根节点
Element config = readDoc.getRootElement();
//通过根节点得到一个名字为"DBConfig"的子节点
Element e = config.getChild("DBConfig");
//在这个子节点下有四个具体的配置信息,我们通过e.getChildText()这个
//方法得到里面的具体的配置信息,就是<>>标签中间的部分,"driver"就是
//标签的名字
//再通过HashMap的put(key,value)的方法将这些信息保存到HashMap中
configTable.put("dbconfig_driver",e.getChildText("driver"));
configTable.put("dbconfig_url",e.getChildText("url"));
configTable.put("dbconfig_user",e.getChildText("user"));
configTable.put("dbconfig_password",e.getChildText("password"));
//再次通过根节点得到一个名字为"DBOperation"的子节点
e = config.getChild("DBOperation");
//找到该子节点下的一个名字为"Select"的子节点
Element c = e.getChild("Select");
//同样进行读取节点信息和HashMap的保存操作
configTable.put("dboperation_selectSQL",c.getChildText("SQL"));
configTable.put("dboperation_selectText",c.getChildText("Text"));
//以下同上
c = e.getChild("Insert");
configTable.put("dboperation_insertSQL",c.getChildText("SQL"));
configTable.put("dboperation_insertText",c.getChildText("Text"));
c = e.getChild("Update");
configTable.put("dboperation_updateSQL",c.getChildText("SQL"));
configTable.put("dboperation_updateText",c.getChildText("Text"));
c = e.getChild("Delete");
configTable.put("dboperation_deleteSQL",c.getChildText("SQL"));
configTable.put("dboperation_deleteText",c.getChildText("Text"));
//最后将解析完成,保存后的HashMap返回
return configTable;
}
}
ContactTest.java 增加注释:
--------------------------------------------------------------------------------------------------------
package ConnectionTest;
import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import org.jdom.JDOMException;
public class ContactTest {
private Connection conn = null; //数据库连接connection
private int flag; //标志位,判断数据库操作
private HashMap config = new HashMap(); //存放从config.xml中得到的配置信息
//常量,分行标志符,从系统中获得的
static final String LINE_SEPARATOR = System.getProperty("line.separator");
/*
* 增加了构造器,得到解析后的xml的配置信息列表
*/
public ContactTest() throws JDOMException, IOException{
XmlParse xml = new XmlParse(); //声明一个对象,解析xml配置文件
config = xml.parseXML(); //调用解析方法,将返回的HashMap结果放入config中
}
/*
* 数据库连接操作
*/
public void getConnection(){
try{
/*
* 修改了程序,通过从配置文件中取得数据库信息
* 这里是从hashmap中拿到配置信息get("dbconfig_url")这个方法
* 是从hashmap中拿出key值为dbconfig_url的value的值,因为放入
* hashmap中的key,value类型都是object的,所以拿出来的时候要转换
* 格式成String
*/
String JDBC_URL = (String)config.get("dbconfig_url");
String JDBC_DRIVER= (String)config.get("dbconfig_driver");
String USER = (String)config.get("dbconfig_user");
String PASSWORD = (String)config.get("dbconfig_password");
Class.forName(JDBC_DRIVER).newInstance();
conn = DriverManager.getConnection(JDBC_URL,USER,PASSWORD);
System.out.println("connection success-------------");
}catch(Exception e){
e.printStackTrace();
}
}
public void closeConnection() throws SQLException{
if(this.conn != null){
conn.close();
}
}
public void getResult(int flag,Collection col) throws IOException{
String name = null;
if(flag == 0){
System.out.println("输出查询信息");
//这里要定义输出文件的文件名字,我们现在也是从hashmap中拿到文件名的值
//就是你在config.xml中看到的标签中的文件名
name = (String)config.get("dboperation_selectText");
WriterOut(name,col);
}else if(flag == 1){
System.out.println("输出插入信息");
name = (String)config.get("dboperation_insertText");;
WriterOut(name,col);
}else if(flag == 2){
System.out.println("输出修改信息");
name = (String)config.get("dboperation_updateText");;
WriterOut(name,col);
}else if(flag == 3){
System.out.println("输出删除信息");
name = (String)config.get("dboperation_deleteText");;
WriterOut(name,col);
}else{
System.out.println("标志码输入错误");
}
}
/*
* 对查询的内容进行输出,并且控制输出格式
*/
public void WriterOut(String name,Collection list) throws IOException{
String path = "d:/"+name; //输出路径
//这里定义了一个IO输出的包装器
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(path)));
int count = list.size(); //计算总共要输出几行
/*
* 修改程序,改变输出格式
*/
String csvData[] = new String[count]; //这个你要求的csv文件的数据输出的数组
Iterator it = list.iterator(); //定义一个迭代器,用来遍历集合
int i = 0;
//开始遍历集合,不断的从集合中取出纪录,直到遍历结束
while(it.hasNext()){
String temp = (String)it.next();
System.out.println(temp);
csvData[i] = temp; //将取出的纪录放入数组中
i++;
}
//将数组中的纪录通过IO包装器放到文件中
for(int j = 0;j < csvData.length;j++)
{
//需要在输出文件是修改文件格式,达到csv的文本要求
writer.write(csvData[j] + LINE_SEPARATOR);
}
writer.close();
}
public void SelectDB(){
try{
getConnection();
Statement stmt = this.conn.createStatement();
//这里的SQL语句也放到xml文件中去配置了
String SQL = (String)config.get("dboperation_selectSQL");
ResultSet rs = stmt.executeQuery(SQL);
Collection col = new ArrayList(); //集合,用来存放数据库信息
ResultSetMetaData ss = rs.getMetaData();
int count = ss.getColumnCount();
/*
* 这里加了些字段信息得内容,这里没有对字段的长度进行判断,所有在输出格式时会有偏差
*/
String temp = "";
for(int j = 1; j <= count; j++){
System.out.print(ss.getColumnName(j)+" ");
/*
* 新增加的语句,为了达到csv文件的输出的格式
*/
if(j == count){
temp = temp + ss.getColumnName(j);
}else{
temp = temp + ss.getColumnName(j)+",";
}
}
col.add(temp); //放入集合中,将一行的内容放到集合中去
System.out.println(" ");
while(rs.next()){
temp = "";
for (int i = 1; i <= count;i++){
System.out.print(rs.getString(i)+" ");
/*
* 新增加的语句,为了达到csv文件的输出的格式
*/
if(i == count){
temp = temp + "\""+ rs.getString(i) + "\"";
}else{
temp = temp + "\""+ rs.getString(i) + "\",";
}
}
col.add(temp); //放入集合中,将整合后的一行的内容放到集合中去
System.out.println(" ");
}
getResult(0,col);
closeConnection();
}catch(Exception e){
e.printStackTrace();
}
}
public void InsertDB(){
try{
getConnection();
String SQL = (String)config.get("dboperation_insertSQL");
PreparedStatement pstmt = this.conn.prepareStatement(SQL);
ResultSet rs = pstmt.executeQuery();
conn.commit();
SQL = (String)config.get("dboperation_selectSQL");;
Statement stmt = this.conn.createStatement();
rs = stmt.executeQuery(SQL);
ResultSetMetaData ss = rs.getMetaData();
int count = ss.getColumnCount();
Collection col = new ArrayList();
String temp = "";
for(int j = 1; j <= count; j++){
System.out.print(ss.getColumnName(j)+" ");
if(j == count){
temp = temp + ss.getColumnName(j);
}else{
temp = temp + ss.getColumnName(j)+",";
}
}
col.add(temp);
System.out.println(" ");
while(rs.next()){
temp = "";
for (int i = 1; i <= count;i++){
System.out.print(rs.getString(i)+" ");
if(i == count){
temp = temp + "\""+ rs.getString(i) + "\"";
}else{
temp = temp + "\""+ rs.getString(i) + "\",";
}
}
col.add(temp);
System.out.println(" ");
}
getResult(1,col);
closeConnection();
}catch(Exception e){
e.printStackTrace();
}
}
public void UpdateDB(){
try{
getConnection();
String SQL = (String)config.get("dboperation_updateSQL");
PreparedStatement pstmt = this.conn.prepareStatement(SQL);
ResultSet rs = pstmt.executeQuery();
conn.commit();
SQL = (String)config.get("dboperation_selectSQL");
Statement stmt = this.conn.createStatement();
rs = stmt.executeQuery(SQL);
ResultSetMetaData ss = rs.getMetaData();
int count = ss.getColumnCount();
Collection col = new ArrayList();
String temp = "";
for(int j = 1; j <= count; j++){
System.out.print(ss.getColumnName(j)+" ");
if(j == count){
temp = temp + ss.getColumnName(j);
}else{
temp = temp + ss.getColumnName(j)+",";
}
}
col.add(temp);
System.out.println(" ");
while(rs.next()){
temp = "";
for (int i = 1; i <= count;i++){
System.out.print(rs.getString(i)+" ");
if(i == count){
temp = temp + "\""+ rs.getString(i) + "\"";
}else{
temp = temp + "\""+ rs.getString(i) + "\",";
}
}
col.add(temp);
System.out.println(" ");
}
getResult(2,col);
closeConnection();
}catch(Exception e){
e.printStackTrace();
}
}
public void DeleteDB(){
try{
getConnection();
String SQL = (String)config.get("dboperation_deleteSQL");
PreparedStatement pstmt = this.conn.prepareStatement(SQL);
ResultSet rs = pstmt.executeQuery();
conn.commit();
SQL = (String)config.get("dboperation_selectSQL");
Statement stmt = this.conn.createStatement();
rs = stmt.executeQuery(SQL);
ResultSetMetaData ss = rs.getMetaData();
int count = ss.getColumnCount();
Collection col = new ArrayList();
String temp = "";
for(int j = 1; j <= count; j++){
System.out.print(ss.getColumnName(j)+" ");
if(j == count){
temp = temp + ss.getColumnName(j);
}else{
temp = temp + ss.getColumnName(j)+",";
}
}
col.add(temp);
System.out.println(" ");
while(rs.next()){
temp = "";
for (int i = 1; i <= count;i++){
System.out.print(rs.getString(i)+" ");
if(i == count){
temp = temp + "\""+ rs.getString(i) + "\"";
}else{
temp = temp + "\""+ rs.getString(i) + "\",";
}
}
col.add(temp);
System.out.println(" ");
}
getResult(3,col);
closeConnection();
}catch(Exception e){
e.printStackTrace();
}
}
public void excute(int tag){
if(tag == 0){
System.out.println("进行查询操作");
SelectDB();
}else if(tag == 1){
System.out.println("进行添加操作");
InsertDB();
}else if(tag == 2){
System.out.println("进行修改操作");
UpdateDB();
}else if(tag == 3){
System.out.println("进行删除操作");
DeleteDB();
}else{
System.out.println("标志码输入错误");
}
}
public static void main(String[] args) throws JDOMException, IOException
{
ContactTest ct = new ContactTest ();
ct.flag = 0; //0-查询;1-添加;2-修改;3-删除
ct.excute(ct.flag);
}
}
------------------------------------------------------------------------------------------------
6.java中所有的数据结构都是对象,通过运算符new为他们分配内存堆,这句话怎么理解?
应该说你这句话不太对,java中的一些基本数据类型,如int ,double ,long,boolean等这些基本类型不是对象,所以严格的来说java不是都是对象的,除了这些个之外其他的都是对象了。
java中要产生对象要具有生命力就要做两件事情,一是声明,这个就好像告诉别人你要生孩子了。二就是要具体分配一个空间给这个对象,让这个对象可以有自己的生命力,这个就是new,而空间就是指的内存空间,java中任何可以操作的对象都是需要得到自己的内存空间才能被使用的
------------------------------------------------------------------------------------------------
7.关于Iterator it = list.iterator();
迭代器是通常是和集合一起用的,是一种java的模式,俗称迭代子,用来遍历整个集合,从集合中取数据
举例:
package Iterator;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class IteratorTest {
public static void main(String[] args){
Collection list = new ArrayList(); //定义一个ArrayList数组集合
list.add("3"); //向这个集合中放入数据
list.add("2");
list.add("1");
list.add("4");
list.add("5");
list.add("6");
Iterator it = list.iterator(); // 第一步
while(it.hasNext()){ //第二步
String temp = (String)it.next(); //取出元素
System.out.println(temp);
}
}
}
--------------------------------------------------------------------------------------------------
8.找出在某一个文件夹下的某一类文件
package File;
import java.io.File;
import java.io.FilenameFilter;
public class FileDemo {
public static void main(String[] args){
-->首先声明一个File对象,指明你的文件目录路径,这里是我计算机中的东西,记住一定要是路径
File dir = new File("E:\\JAVA程序\\JAVA code\\copyfile\\core java");
-->Filter是你自己写的一个实现FilenameFilter接口的类,这个接口用用来过滤文件的名字,传入的参数是要过滤的关键字
Filter filter=new Filter("java");
-->这里将通过Filter过滤得到的文件列表放到一个数组中去
String fileList[] = dir.list(filter);
System.out.println("找到文件数:"+fileList.length);
-->下面就是通过遍历这个数组,从数组中取到文件名
for(int I = 0 ; I < fileList.length; I++){
-->因为在下面要对文件进行判断,所以这里要加上路径和文件名,否则下面的判断会因为找不到文件而判断错误
File tmpFile = new File("E:\\JAVA程序\\JAVA code\\copyfile\\core java\\"+fileList[I]);
-->判断找到的这些文件是目录呢还是文件
if(tmpFile.isFile()){
System.out.println("文件:"+tmpFile);
}else{
System.out.println("目录:"+tmpFile);
}
}
}
}
-->实现过滤器接口的类,这个类主要作用是找出所有文件夹下的以extension结尾的文件
class Filter implements FilenameFilter{
String extension;
Filter(String extension)
{
this.extension=extension;
}
public boolean accept(File directory,String filename){
-->这里的filename.endsWith("."+extension);方法就是找以.extension结尾的文件
return filename.endsWith("."+extension);
}
}
我所修改的程序简单的讲就是,查找所有在E:\\JAVA程序\\JAVA code\\copyfile\\core java这个目录下的以.java结尾的文件
-----------------------------------------------------------------------------------------------------------------
9.关于接口的一些问题
Collection months=new ArrayList(); (这个ArrayList和Collection 我都不太明白)
--------------------------------------------------------------------------------------------------------
Collection是集合的一个接口,ArrayList是集合的一种,这里ArrayList实现Collection这个接口,声明一个接口的对象需要new一个实现他的类。
Object s[]=months.toArray(); (这个地方也不明白)
--------------------------------------------------------------------------------------------------------
Object是java中所有类的父类,months是前面生成的集合对象,是一个ArrayList的对象,这个对象有一个方法是toArray(),能够把这个集合中的转换成一个Object类型的对象数组
System.out.println(s[i].toString());(s[i].toString() 打印这个为什么就是数组里面的内容)
---------------------------------------------------------------------------------------------------------
System.out.println()打印出来的是字符串,()内放的应该是String类型的值,这里用了
s[i].toString()这个语句,意思就是把数组中的一个对象转换成String类型然后输出
List months=new ArrayList();(这个地方List要换成ArrayLis才不报错
我也不知道为什么 我想只要上面那个明白了 下面这个也应该就明白了吧)
----------------------------------------------------------------------------------------------------------
这里和Collection是相同的,List是一个集合的接口,ArrayList()是实现这个接口的类,同样也是生成一个接口对象需要new一个实现他的类