A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马7期班长 初级黑马   /  2018-4-23 14:45  /  575 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 小石姐姐 于 2018-4-24 16:10 编辑

​                                                                                                    随手记

File类,File类主要就是操作文件的类,可以读取文件,写入文件,它创建对象指向的是抽象的文件夹或者是文件。
构造方法如下:
1、File f = new File("D:\a.txt");//指向D盘下的a.txt文件
2、File f1 = new Fiel("D:\","a.txt");//分开的方式
3、File f2 = new File(new File(),"a.txt");//传入一个File对象
成员方法:
创建功能————————————
getAbsoluteFile();
getAbsolutePath();
list();
CreadtNewFile();//创建文件
mkdir()//创建单层目录
mkdirs()/创建多层目录
delete();删除文件+目录(只能删除空的目录)
判断功能————————————
exists();//判断文件或目录是否存在
isAbsolute()//判断File对象是否是绝对路径
isDirector();//判断是否是一个文件目录
isFile();//判断是否是一个文件
获取——————————————
getAbsolutePath();//获取绝对路径
IO流的分类:
按流分
​        输入流
​        输出流
按类型分类
​        字符
​                FileReader
​                FileWriter
​        字节
​                InputStream
​                OutputStream
io更仔细的分类
Reader //读取字符流的抽象类
1)InputStream//字节输入
ObjectInputStream //对象输出流
FileReader//普通字符输出流
2)InputStreamReader//把字节转换成字符的类
ObjectOutputStream//对象输出流
3)BufferedReader//缓冲字符输入流
Writer//写入字符的抽象类
OutputStream//字节输入流
FileWriter普通输入流
OutputStreamWriter();//字符转换流,将字节转换成字符
InputStreamReader()将字节输入流转换为字符输入流
特殊读写对象(按字节读取):
ObjectInputStream();
ObjectOutputStream();
对象输出流//用来读写任意类型的对象
ObjectOutputStream
对象输入流
ObjectInputStream
只有实现序列化接口才可以读取对象serializable
java.io.serializable
writerObject();
//打印流 继承Object
printWriter
构造
PrintWriter pw = new PrintWriter(File f);
写入到制定文件中‘
特点:不能写入字节,但是能够写输出流中转换后的OutputStream
标准打印流
构造方法中可以文件路径
传入一个写入字节流(把字符转换为字节写入到文件中)
PrintOutputStream。
标准字节输入流   InputStream ==引用数据类型作为返回值
public static final  InputStream in;//用来读取键盘录入的数据
标准字节输出流
public static final printStream out;//将字节打印到命令行
注意:
1、字节流
OutputStream os =  System.out;
//注意os只能写Byte  写的时候把String 转换成byte 通过"ZZZZ".getBytes();
2、转换流
如何把字节输出转化成字符输出,通过OutputStreamWriter ;它是FileWriter的父类
OutputStreamWriter是不能够直接读写,要通过流来读写,写构造方法时就要传入一个流
如:
创建一个字节流同过OutputStreamWriter进行转换写到控制台
OutputStreamWriter的父类为Wrtier
OutputStreamWriter osw = new OutputStreamWriter(new OutputStream(System.out));
InputStreamReader//将字节转换成字符 不能直接读取,只能传入字节读取通过InputStreamReader进行转换,读取到的数据就会从字转换成字符
3、打印流
PrintStream//System.out
字节打印流
PrintWriter
字符打印流
不能输出字符,可以输出其他任意类型
可以实现自动刷新(println) 构造里面添加True
可以把字节输出流转换成字符输出流
底层实现
new BufferedWrtier(new OutoputStreamWriter(new FileWriterStream(File file)))
从然后把字符转换成字节高效写入!!!!!!!?到底是通过Buffer写还是通过FileWriter写
Perporties存储的都是字符串,实现了Hashtable,是一个持久性的属性集   
可以有hashmap的功能
成员方法:
put(object,object);
p.list() 配合打印流写数据到文件中
p.load()配合读取对象  读取键值对  ,通过entry对象。
线程
线程是程序中的执行线程,允许应用程序并发运行多个程序,效率高,安全性低
只能做一件事情,效率低,安全性高
Cpu执行程序是随机性的        
创建线程的两种方式
1.直接让类实现Runnable
2.让类继承Thread重写run方法
IP地址
InetAddress
表示就是Ip地址,是一种低级协议,包含ipv4 32个字节,ipv6128个字节,udp跟tcp都是在它的基础上构建的,
InetAddress没有构造方法
子类包括Inet4Address 和 Inet6Address
静态方法InetAddress.getByName(String host)   //hos可以写主机名和ip  主机名可能是重复的,所以建议host填写ip
getLocalhost()//获取本机的ip对象
getHosetName();//获取ip的主机名
getHostAddress();获取ip地址
getByname();根据主机名获取ip 根据ip获取主机名
UDP协议
特点,没有链接,不可靠,但是效率高,每次发送数据要先打包,发送的限制为64kb
TCP协议
有链接,可靠,速度慢。
步骤:
客户端
创建客户端通信端点
创建outputStream
准备数据并写入流中
关闭资源
服务端
创建服务端通信端点
进行监听
创建InputStream
读取数据
关闭资源
反射
java反射机制在运行状态下,对任意类都能操作他的所有属性和方法,对任何对象也都能操作他的属性和方法,这种动态获取调用对象属性和方法,成为java反射机制。
反射的前提是需要获取字节码
三种方式:
1、通过对象进行掉用。
Student s = new Student()
s.getClass();
---
2、通过对象进行调用
Student.class();
---
3、通过包名进行调用
Class.forName("包名");
//演示获取公共字段 Feild f = clazz.getField();
Class clazz = Class.forName("case1.Student");
通过字节码创建对象
Object o = clazz.newInstance(); //返回Object类型
获取公共字段对象
Feild f  =  clazz.getFeild("字段名称");
f.set(i,"张三");
Constructors []  constructor =  getConstructors();
Object o =  f.get(stu);
根据对象获取成员属性并设置
Feild[] feilds =clazz.DeclaredFeilds();//暴力返回所有成员变量
Feild feilds = clazz.DeclaredFeids(字段)暴力返回字段的对象
获取学生类的字节码对象
Class clazz = Class.forName("itheima_01.Student");
获取带参数构造
Constructor con = clazz.getConstrctor(String.class,int.class);
//根据构造创建对象
Object o = con.newInstance("张三",11);
//暴力获取字段
Field field = clazz.getDeclaredField();
//设置字段
field.set(o,"李四");
setAccesible(true);//设置取消检查
syso(o);
javaBean其实就是类,用来存储数据。一般使用公共进行修饰,私有成员变量,为成员提供get和set方法。序列化接口
BeanUtils.populate(obj,map);//利用反射从map中的key暴力对象的字段,进行暴力设置



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马