java编程思想读书笔记(三)
1、java io
主要有:字节数组、string对象,管道,文件,其他
java的outputstream是写文件的拥有write方法,inputstream是读文件的,拥有read方法。
管道和Linux重的管道的完全不同,Linux是一个文件,java用的是内存,所以java提供的标准库是不能进行有名管道操作的。
2、File类
file能够新建一个文件,也能够新建一个目录。
1 File f = new File("/111.txt"); 2 f.mkdir(); //新建目录 3 try{ 4 f.createNewFile(); //新建文件,需要try catch 5 } 6 catch (Exception e){ 7 8 }
File类还有很多方法,可以获取文件的路径,修改名字等等
3、读写一个文件
1 try { 2 DataOutputStream out2 = 3 new DataOutputStream( 4 new BufferedOutputStream( 5 new FileOutputStream("Data.txt"))); 6 out2.writeBytes( 7 "Here's the value of pi: \n"); 8 out2.writeDouble(3.14159); 9 out2.close(); 10 DataInputStream in5 = 11 new DataInputStream( 12 new BufferedInputStream( 13 new FileInputStream("Data.txt"))); 14 System.out.println(in5.readLine()); 15 System.out.println(in5.readDouble()); 16 } catch(EOFException e) { 17 System.out.println( 18 "End of stream encountered"); 19 }
这个创建一个带缓存的文件写入类,当然单纯的使用FileOutputStream也可以买足我们的要求。
需要注意的是使用完成后一定要调用close方法否则不会写入到文件中。
3、RTTI,反射
Class类:该类的forname方法可以通过一个类的名字获取一个类的句柄。
获取到该类的句柄以后可以使用该剧并获取该类的类型等操作。
1 try{ 2 Class cc = Class.forName("BBB"); 3 BBB.class.isInstance(cc);//这个写法比较诡异,和C#完全想法 4 String str = cc.getName(); 5 System.out.println(str); 6 } 7 catch (Exception e){ 8 9 }
4、方法提取
可以提取类的方法和构造函数。
1 try{ 2 Class cc = Class.forName("BBB"); 3 BBB.class.isInstance(cc);//这个写法比较诡异,和C#完全想法 4 Constructor c1 = cc.getConstructor(); 5 String str = cc.getName(); 6 System.out.println(str); 7 } 8 catch (Exception e){ 9 10 }
重要的是,getConstructor必须是有明显的构造函数才可以,默认的构造函数是获取不到的。