java web j2se,Java-Web/J2SE_3.md at e211f7ee1859eebe867180daa613f454c27457bd · noBaldProgramerLi/Jav...

3.J2SE:J2SE轻松入门第三季

1.泛型

定义方式:class MyTest{ T var; ...

泛型传的只能是引用类型

调用方式:MyTest mt=new MyTest();

2.MySql

java连接数据库的方法:JDBC

安装之后让MySql随系统启动启动(在 服务中可以设置,也可以设置手动:net start mysql/ net stop mysql)

1.创建数据库

数据库名词

view 视图

stored procedure 存储过程:用sql语法编写的程序

结构化语言:用来增删改查

创建student数据库,新建studinfo表,字段为no,name,sex,age

常用命令

增:insert into studinfo values('002','李四','男',20)

删:update studinfo set name='李五' where no = '002'

改:delete studinfo where no='002'

查:select * from studinfo

select name,chinese from studinfo,grade where studinfo.no==grade.no(联表查询)

3.JDBC访问数据库

首先下载JDBC的驱动程序

引入到项目中(项目下:内部jar包 项目外:外部jar包)

编写程序:加载驱动程序到内存Class.forName("com.mysql.jdbc.Driver");

创建连接:Connection conn=DriverManager.getConnection("jdbc:mysql://localhost/student","root","123456");(需要账号密码,使用sql下的jar包而不是mysql)

创建Statement:Statement st=conn.createStatement();

执行sql语句:st.executeQuery("select * from studinfo");返回的是ResultSet

循环打印,从1开始打印,用while(rs.next())循环,每层循环打印n个,每个用rs.getString(i)获取

加载jdbc,创建连接后读取student数据库studinfo表(4个字段)的所有数据

public static void main(String[] args) throws ClassNotFoundException, SQLException {

Class.forName("com.mysql.jdbc.Driver");

Connection conn=DriverManager.getConnection("jdbc:mysql://localhost/student", "root", "123456");

Statement st=conn.createStatement();

ResultSet rs=st.executeQuery("select * from studinfo");

while(rs.next()){

for (int i = 1; i <= 4; i++) {

System.out.print(rs.getString(i)+"\t");

}

System.out.println();

}

}

获取字段标题:ResultSetMetaData data=rs.getMetaData(); data.getColumnName(i)

4.增加数据

增加,修改,数据删除都没有返回数据,所以用st.executeUpdate("sql语句");

使用占位符的方式添加数据更加高效:先conn.prepareStatement(sql);,再ps.setString(1,"003"),最后ps.executeUpdate();执行

3.文件系统操作

1.显示文件的信息

创建File对象:File file=new File("D:\\eclipse\\eclipse.exe");

将信息存进StringBuilder中:str.append("信息内容")

可以获得的信息:

最后修改日期:file.lastModified()

修改时间格式的方式:

Calendar ca=Calendar.getInstance();

ca.setTimeInMillis(file.lastModified());

ca.getTime().toLocaleString();

文件大小:file.length()

文件类型:file.isDirectory()

子目录:file.listFiles()

路径:file.getPath(),转化为大写并txt结尾:getPath().toUpperCase().endsWith(".TXT")

寻找磁盘下的子目录信息,使用递归算法,可能会遇到系统不让读文件,直接忽略。

4.字符流&字节流

字节就是byte(8位),字符是char(16位,和具体编码有关)

字节流可以处理所有的工作,字符流在处理字符工作的时候比较方便

Java IO 流

/ \

/ \

字节流 字符流

/ \

/ \

/ \

InputStream,OutputStream Reader,Writer

/ \

/ \

/ \

FileInputStream,FileOutputStream FileReader,FileWriter

BufferedInputStream,BufferedOutputStream BufferedReader,BufferedWriter

InputStreamReader,OutputStreamWriter

PrintStream PrintWriter

1.字节流读取文本文件(不适合使用)

新建FileInputStream对象:FileInputStream fis=new FileInputStream("E:\\目录\\文件.txt");

获取文件的长度:fis.available(),然后利用获取到的长度新建字节数组:byte[] data=new byte[len]

将读取的内容存到字节数组中:fis.read(data);

最后将字节数组包装成字符串new String(data),记得关闭字节流fis.close()

2.字符流读取文本文件

新建FileReader对象:FileReader fr=new FileReader("E:\\目录\\文件.txt");

用int型获取数据:ch=fr.read()

当读出来为-1的时候说明读取结束,跟字节流的不同,字节流读出来的不能直接强转为字符,需要装配为数组再包装为字符串

将int型转化为字符,记得关闭字符流fr.close()

3.字节流的方式写文件

新建FileOutputStream对象

执行write方法,将String转化为字节:fos.write(str.getBytes()),记得关闭字节流fos.close()

4.字符流的方式写文件

新建FileWriter对象

直接调用write方法写String(字符串)对象,记得关闭字符流fw.close()

5.利用读写做复制

读写的时候如果用字节流的话,数组的长度定义为1024。将内容读取到byte[] data字节数组中,将读取的个数存到int型中

写出的时候,fos.write(data,0,ch),每一次写出0到ch的内容,最后一次可能就不是1024了

提高效率的方式:使用装饰模式,BufferedOutputStream bis=new BufferedOutputStream(bis);&BufferedInputStream包装

使用装饰模式的BufferedReader,他有readLine()方法,可以进行整行读取。

6.将字节流转化为字符流

字节流转化为字符流的方式 OutputStreamWriter osw=new OutputStreamWriter(fos);

7.PrintStream&PrintWriter

定义输出对象:fos

将输出对象包装为PrintStream对象

调用print("输出的文字");方法就可以输出打印文字

用字节流的装饰模式高效复制文件

public static void main(String[] args) throws IOException {

FileInputStream fis=new FileInputStream("F:\\Test.txt");

BufferedInputStream bfi=new BufferedInputStream(fis);

FileOutputStream fos=new FileOutputStream("C:\\Test.txt");

BufferedOutputStream bos=new BufferedOutputStream(fos);

byte[] arr=new byte[1024];

int ch=0;

while((ch=bfi.read(arr))!=-1){

bos.write(arr, 0, ch);

}

bfi.close();

bos.close();

System.out.println("复制完毕");

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值