java修改xml配置文件_在上例的基础上修改程序,通过xml配置文件得到数据库信息...

更新程序:

-----------------------------------------------------------------------------------------------------------

当前目录下新建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一个实现他的类

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值