Io流介绍及用法

一、LO流介绍:

         lo流是用来处理设备之间数据传输的!

二、 lo流分类:

         流向分类

              输入流(inputStream和Reader):

              输出流(OutputStream和Writer): 

             如:内存卡和硬盘!

                 硬盘内数据传入内存卡则是输入流!内存卡向硬盘传输数据则是输出流!

         操作类型分类

               字节流(inputStream和OutputStream):字节流可以操作任何数据(计算机数据都是字节形式存储)

               字符流(Reader和Writer):字符流只能操作纯字符数据,防止乱码

        相对路径和绝对路径:

               相对路径:指某个文件路径和别的文件路径关系的

               绝对路径:硬盘是真正存在的路径!

三、常用Io流类:

           

 

四、

   目的:使用FileInputStream读取文件
*                   思路:
*                         使用FileInputStream读取文件
*                         项目右键创建File,创建txt文件
*                         在txt输入字符
*                        返回public页面,
*                        建立和txt通道(找到txt绝对路径)
*                        打印txt字符

代码:

           

public class FilelnputStreamText01 {
   public static void main(String[]ages){
	   FileInputStream fis=null;
	  // 使用读取文件,需要添加被读取路径,加双\\,在异常最大化,(路径寻找,a.txt右击properties就可以找到路径)
	   try {
		   //建立通道
		 //fis =new FileInputStream("D:\\myeclipse\\chapter_01\\a.txt");

                                          // 相对路径
                                         fis =new FileInputStream("a.txt");

		 //无参类型,返回int值,如果打印的是字母(字码值)读取完毕返回-1
		 //第一种打印
		/*System.out.println(fis.read());
		System.out.println(fis.read());*/
		 
		 //第二种打印!效率不高,一个一个字符打印
		/* int temp;
		 while((temp = fis.read()) != -1){
			 //强行转换为char类型,java数值用unicode表示,转换为char类型就可以用原来数值来表示
			 char c = (char)temp;
			 System.out.println(c);*/
		/* }*/
		 
		 //第三种打印
		 //定义byte数组告诉系统一次读取几个字节,减少内存和硬盘之间通信,可以提高效率
		 byte[]arr=new byte[5];
		 int temp;
		 //有参的read方法返回的int值是读取几个字节
		 while((temp = fis.read(arr)) !=-1){
			 System.out.println(new String(arr,0,temp));
		 }
		
	} catch (FileNotFoundException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
		//finally即使上面代码报错,finally里面代码也会执行,close减少内存
	}finally{
		try {
			fis.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
   }
}

  运行结果:第一种方法,打印几个,就运行几个结果!代码比较重复

                         第二种方法:全部打印出来,只不过字符却是一个一个被打印出来:如:123,打印出来就是:1,2,3(隔一行)

                         第三种方法:直接全部打印出来,只要给byte字节数(字符位数)! 

        注意:开发中分隔符最好不要直接写:File.separator(写上这一句话,连接路径就没得问题了)

                     fis =new FileInputStream(“file”+ File.separator+"a.txt",true);

 

posted on 2020-09-16 19:44  爱前端的小魏  阅读(450)  评论(0编辑  收藏  举报

导航