发表于: 2018-02-10 22:14:12
1 683
今日完成
1.学习IO流
a.什么是流:
输入流示意图
b.什么是IO流
IO(in/out)流主要用于硬板、内存、键盘等处理设备上得数据操作,根据处理数据的数据类型的不同可以分为:字节流(抽象基类为InPutStream和OutPutStream)和字符流(抽象基类为Reader和Writer)。根据流向不同,可以分为:输入流和输出流。
c.字符流和字节流
I.字节流读取的时候,读到一个字节就返回一个字节; 字符流使用了字节流读到一个或多个字节(中文对应的字节数是两个,在UTF-8码表中是3个字节)时。先去查指定的编码表,将查到的字符返回。
II.字节流可以处理所有类型数据,如:图片,MP3,AVI视频文件,而字符流只能处理字符数据。只要是处理纯文本数据,就要优先考虑使用字符流,除此之外都用字节流。
两者主要区别:字节流操作的基本单元为字节,字符流操作的基本单元为Unicode码元;字节流通常用于处理二进制数据,实际上它可以处理任意类型的数据,但它不支持直接写入或读取Unicode码元;字符流通常处理文本数据,它支持写入及读取Unicode码元。
对部分类的练习
public class FileReaderWriterDemo {
public static void main(String[] args) throws IOException {
FileReader fr=new FileReader("e://ac.txt");
FileWriter fw=new FileWriter("e://ad.txt");
BufferedReader bfr=new BufferedReader(fr);
BufferedWriter bfw=new BufferedWriter(fw);
FileInputStream fr2=new FileInputStream("e://AF.txt");
FileOutputStream fw2=new FileOutputStream("e://AG.txt");
DataInputStream bfr2=new DataInputStream(fr2);
DataOutputStream bfw2=new DataOutputStream(fw2);
String s2=bfr.readLine();
long i=bfr2.readLong();
bfw.write(s2);
bfw2.writeLong(i);
bfr.close();
bfw.close();
bfr2.close();
bfw2.close();
}
}
输出
2.学习对私有变量的暴力反射
class ReflectPoint {
private int priVar;//私有变量
public ReflectPoint(int priVar) {
this.priVar = priVar;
}}
class ReflectTest {
public static void main(String[] args) throws Exception {ReflectPoint pt1 = new ReflectPoint(3);//实例化ReflectPoint对象
//实例化一个Field对象,运用反射返回一个ReflectPoint类的对象,再返回一个
Field
对象,该对象反映此Class
对象所表示的类或接口的指定已声明字段。Field fieldx = pt1.getClass().getDeclaredField("priVar");
//设置所有属性级别为可访问,如果只想设置一个属性,可以 属性.setAccessible(true)
fieldx.setAccessible(true);
fieldx.set(pt1, 33);
System.out.println(fieldx.get(pt1));
}
}
明天计划
1.完成IO流的学习;
2.学习网络连接;
遇到问题
-------------
收获
搞清了IO流的部分知识点,如:什么是流,IO流的用处等;
学习到了怎么通过反射获取私有变量;
评论