java基础io流!

1.何为IO流:

   java中用来处理设备之间的数据传输.JAVA中对数据的操作是通过流的方式.

   JAVA中用于操作流的对象都在IO包中。

2.流的分类:

   1) 按数据分为两种:字节流的字符流。

   2) 按流向分: 输入流和输出流。

3.流的关闭:

   在流不需要使用的时候一定记得要去关闭。这样可以避免资源的消耗,也提高效率。

   但是在执行close()方法的时候,系统会自己调用flush()方法,将数据刷入到文件中。

   还有一点就是如果存在多个流对象,那么需要将流按逆序关闭。不能按顺序关闭,否则会报错。

4. FileWriter和FileReader:

    用来处理文件的写入和读取.   

	FileWriter fileWriter = new FileWriter("D:\\demo1.txt");


  当文件不存在时,会去自动创建。但是如果文件存在则会覆盖原来文件。

   若是要在原来的基础上去写入文件。则在后面加一个参数。

	fw = new FileWriter("D:\\demo.txt", true);


   这样即可现实文件的续写。关于文件的读取一样:

	fileReader = new FileReader("D:\\demo.txt");

   一般情况下会以字符数组的方式去读取数据.

	char[] data = new char[1024];
	int num = 0;
	while((num = fileReader.read(data)) != -1){
		/**
		 * 只读取含有字符的长度.
		 * **/
		System.out.print(new String(data,0,num));	
	}


 

    这里要注意在windows下要写入个换行符,要写为witer("\r\n");

5.bufferedWiter和buufferedReader:

   缓冲区的出现就是为了提高流的操作效率才出现的。

   所以在创建缓冲区之前,必须要有流的对象。

   当然缓冲区还提高了一个跨平台的换行符. newLine();

   不在需要用流对象的时候那样witer("\r\n");直接使用换行符就好!

  

  bufferedReader可以选择去读一行,当返回结果为null 时表示文件结束,但是要注意的是readLine()只返回回车符之前的数据,并不返回回车符。

  同时也可以去用字符数组的方式去读取数据.

		/**
		 * 用缓冲区中的方法读一行
		 * 
		 * **/
			
		fw = new FileReader("d:\\demo2.txt");
		br = new BufferedReader(fw);
		String line = null;
		
		while((line = br.readLine()) != null){
			System.out.println(line);
		}
			
		/**
		 * 以字符数组方式去读取
		 * **/
		/**
		 fw = new FileReader("d:\\demo.txt");
		 br = new BufferedReader(fw);
			
		char[] data = new char[1024];
		int ch = 0;
		long startTime= new Date().getTime();
		while((ch = br.read(data)) != -1){
		System.out.println(ch +" "+new String(data));
		}
		long emdTime= new Date().getTime();
		System.out.println("time:" +(emdTime - startTime));
		*/


 

6.BufferedReader中的readLine()方法的原理:

原文地址:https://www.cnblogs.com/yangzhi/p/3576612.html