字节流:

package InputOutput;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

/*
 * 字节流:
 * 		如果用户想要操作的不是文本数据,而是图片数据,这时候就需要用到字节流
 */
public class FileStreamDemo {
	public static void main(String[] args) throws IOException{
//		writeFile();
//		readFile_1();
//		readFile_2();
		readFile_3();
	}
	
	/*
	 * 使用字节流写入一个文件
	 */
	public static void writeFile()throws IOException{
		//创建一个字节输出流
		FileOutputStream fos = new FileOutputStream("c:/2.txt");
		
		//将需要写入的字符串写入,并且调用字符串的getBytes()方法,将字符串转换为字符数组
		fos.write("abcdegfhijklmn".getBytes());
		
		//字节流不用刷新
		
		fos.close();
	}
	
	public static void readFile_1() throws IOException{
		//创建一个字节读取流
		FileInputStream fis = new FileInputStream("c:/1.txt");
	
		//读取数据(读取一个字节,效率慢)
		int ch = 0;
		while((ch = fis.read()) != -1){
			System.out.print((char)ch);
		}
	}
	
	/*
	 * 一次性读取多个
	 */
	public static void readFile_2() throws IOException{
		//创建一个字节流
		FileInputStream fis = new FileInputStream("c:/1.txt");
		
		byte[] buf = new byte[1024];
		int len = 0;
		while((len=fis.read(buf)) != -1){
			System.out.println(new String(buf,0,len));
		}
	}
	
	/*
	 * 第三各方读取字节流的方式,字节流特有的方式
	 * 		available();  返回此输入流下一个方法调用可以不受阻塞地从此输入流读取(或跳过)的估计字节数。
	 * (注意:如果我们操作的文件过大,超出了内存或者JVM的大小,则JVM直接崩溃,所以如果要操作大文件,还是建议采用第二种方式)
	 */
	public static void readFile_3()throws IOException{
		FileInputStream fis = new FileInputStream("c:/1.txt");
//		int num = fis.available();	//获取文件里面的数据长度,注意:如果有换行\r\n,代表两个字节
		
		byte[] buf = new byte[fis.available()];	//注意:fis.available()获取文件的长度,做为数组的长度
		
		fis.read(buf);	//读取文件到数组中去
		
		System.out.println(new String(buf));	//将数组转换为字符串,打印出来
	}
}

  

posted on 2013-07-27 20:07  樱花满天  阅读(185)  评论(0编辑  收藏  举报

导航