IO流(Input Output Stream)总结1

来源:互联网 发布:电脑转盘抽奖软件 编辑:程序博客网 时间:2024/04/29 16:19

1、计算机世界是什么?

答:就是0和1,科学家说的……无数个0和1变成了计算机!!!!!


2、IO流东西满多的,想到哪说到哪吧。


3、IO流(Input Output Stream),中文全称输入输出流。


4、到底什么是流?

答:内存中的程序与文件、网络、等等所通信时,会传输数据,而数据的传输过程,我们抽象为称作流,毕竟我们总要为它起个名字,不然数据传输的时候我们怎么形容?直接说个流,是不是很方便,解释比较牵强……建议有所知道,不断加深理解!


5、IO流的分类

a、因为传输的数据类型不同,可分为 字符流,字节流

b、根据流的方向来分类,就可分为输入流、输出流


6、IO流到底是干啥的?实际作用呢?

答:最最常用的就是读取文件、写入文件、从网络获取数据流然后再写入到本地文件,你可以理解成是内存与硬盘的通信桥梁。


7、请问读取文件是什么流?

答:是输入流,程序读取文件,即文件流向程序内存中。


8、写入文件是什么流?

答:是输出流,从程序中向硬盘的文件写入字节或字符,即程序从内存中将字节或字符流向文件。


8、java中IO流,全部有封装好的类,用起来那必须爽歪歪的,直接上例子吧,从内存中的实例对象


9、例子:windows系统下创建一个文件

class IOTest {public static void main(String args[]) {File f = new File("D:\\hello.txt"); //一个File对象,代表一个文件或目录(这点要知道,目录可以想像成是特别的文件,这是一个集合的思想)try {f.createNewFile(); //调用File的实例方法createNewFile()创建文件,该方法会抛出IOException对象,我们try catch住就OK} catch (IOException e) {e.printStackTrace();}}}

10、例子:删除上一个例子中创建的文件

class IOTest {public static void main(String args[]) {File f = new File("D:\\hello.txt"); if (f.exists() ) {f.delete();}}}


11、例子:创建一个目录

class IOTest {public static void main(String args[]) {File f = new File("D:\\hello.txt"); //java大神封装的File就是这么牛逼,new一个File实例对象,然后你就开心的happy吧f.mkdir();//mkdir(),该实例方法会创建一个目录}}


12、例子:遍历一个目录下的所有文件与目录,并将其名字打印出来

class IOTest {public static void main(String args[]) {File f = new File("D:\\cocos2Dx"); String[] fileNames = f.list(); //list()实例方法返回一个String的数组对象,其中数组中的每一个元素代表文件或目录的名字for(String temp: fileNames) { //这里我们将所有的名字打印出来System.out.println(temp);}}}


13、例子:打印出一个目录下所有文件或目录的完整路径

class IOTest {public static void main(String args[]) {File f = new File("D:\\cocos2Dx"); File[] fileNames = f.listFiles(); //实例方法listFiles(),返回一个File的数组对象,每个元素是个File实例对象(其实放的肯定是引用)for(File temp : fileNames) {System.out.println(temp); //打印每个File实例对象,File的toString()就是返回的完整路径}}}


14、例子:判断一个File是否为目录

class IOTest {public static void main(String args[]) {File f = new File("D:\\cocos2Dx"); if( f.isDirectory()) {System.out.println("我是目录");} else {System.out.println("我是文件");}}}


15、File,这个类封装的是不是太牛逼了,经常要用到它啊,看来我得抽空总结一个File类的API文档了!!


16、RandomAccessFile,利用这个类的实例对象,我们可以向文件中写入字符串

class IOTest {public static void main(String args[]) {File f = new File("D:\\hello.txt");RandomAccessFile ranFile;try {ranFile = new RandomAccessFile(f, "rw");ranFile.writeBytes("hello world");ranFile.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}


17、利用输出字节流,向文件中写入字符串(有问题,我没有close掉Stream)

class IOTest {public static void main(String args[]) {File f = new File("D:\\hello.txt");try {OutputStream outStream = new FileOutputStream(f); //先得到一个FileOutputStream实例对象,FileOutputStream is a OutputStream byte[] bye = "我的世界".getBytes();  //将String对象转换成byte的数组对象outStream.write(bye); //调用write实例方法,传入byte数组对象} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}


18、利用FileOutputStream,也可以追加写入的内容

class IOTest {<span style="white-space:pre"></span>public static void main(String args[]) {<span style="white-space:pre"></span>File f = new File("D:\\hello.txt");<span style="white-space:pre"></span>try {<span style="white-space:pre"></span>OutputStream outStream = new FileOutputStream(f, true); //注意,这次我们调用的是两个参数的构造方法 <span style="white-space:pre"></span>byte[] bye = "我是个天才".getBytes();  //将String对象转换成byte的数组对象 <span style="white-space:pre"></span>outStream.write(bye); <span style="white-space:pre"></span>outStream.close();<span style="white-space:pre"></span>} catch (FileNotFoundException e) {<span style="white-space:pre"></span>e.printStackTrace();<span style="white-space:pre"></span>} catch (IOException e) {<span style="white-space:pre"></span>e.printStackTrace();<span style="white-space:pre"></span>}<span style="white-space:pre"></span>}}

19、利用输入字节流,读取文件内容

class IOTest {public static void main(String args[]) {File f = new File("D:\\hello.txt");try {InputStream inStream = new FileInputStream(f); //先得到FileInputStream实例对象byte[] temp = new byte[1024]; //分配一个byte的数组对象,一共可以存放1024个元素,用于持有读取的byteinStream.read(temp); //读取到byte数组对象里,每一个元素为一个字节,就这样一个字节一个字节的放到该数组对象里System.out.println(new String(temp)); //将byte数组对象转换成String实例对象,并打印出来inStream.close();} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}

20、申请一个存放1024个byte元素的数组对象,是不是占用内存有些大啊,再优化一下上面的例子
class IOTest {public static void main(String args[]) {File f = new File("D:\\hello.txt");try {InputStream inStream = new FileInputStream(f);byte[] temp = new byte[(int)f.length()]; //inStream.read(temp);System.out.println(new String(temp));inStream.close();} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}

21、使用输出字符流向文件中写入内容

class IOTest {public static void main(String args[]) {File f = new File("D:\\hello.txt");Writer writer;try {writer = new FileWriter(f);writer.write("我是最棒的");writer.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}


22、使用输出字符流向文件中追加内容

class IOTest {public static void main(String args[]) {File f = new File("D:\\hello.txt");Writer writer;try {writer = new FileWriter(f, true);  //第二个参数,将改变FileWriter的append实例变量,true,意为追加内容writer.write("我的世界里面不能没有你");writer.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}


23、使用输入字符流,读取文件中的内容

class IOTest {public static void main(String args[]) {File f = new File("D:\\hello.txt");try {Reader reader = new FileReader(f);char[] chars = new char[100]; //读到的字符到char的数组对象里reader.read(chars);System.out.println(new String(chars));} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}

24、字节流与字符流哪个用的多?

答:当然是用的字节流多一些啊,具体原因以后要深入


25、OutputStreramWriter介绍

答:利用该类的实例对象, 将输出字节流转换成输出字符流

26、InputStreamReader介绍

答:将输入字节流转换成输入字符流


27、内存操作流

答:总结2会详细总结

28、管道流

答:线程之间的通信,我们称为管道流,总结2会详细总结

29、打印流

答:总结2会详细总结

30、BufferedReader,利用缓冲区读取字符流

答:总结2会详细总结

31、总结

答:看起来io流深不可测,确实也是,所谓的流就是计算机程序与文件之间传输的内容过程,被形象的把bit像在管道里一样流来流去,io流不简单。继续深入!





0 0
原创粉丝点击