文件 I/O字节流

输入字节流:

import java.io.*;

public class test_main {

	public static void main(String[] args) {
		
		int n=-1;
		byte []a = new byte[100];

		try {
			File f = new File("Example10_4.java");
/*File类文件和目录路径名的抽象表示
*File(String pathname)通过将给定的路径名字符串转换
为抽象路径名来创建新的 File实例。*/  
			InputStream in = new FileInputStream(f);
/******************************************
*InputStream 抽象类是表示输入字节流所有类的超类     
*FileInputStream 用于读取诸如图像数据的原始字节流
*FileInputStream(File file)通过打开与实际文件 
  的连接创建一个 FileInputStream ,该文件由文件系统
  中的 File对象 file命名。                                                  
******************************************/
			while((n=in.read(a,0,100))!=-1){
/* int read(byte []b,int off,int len)
 * b - 读取数据的缓冲区,off - 写入数据的数组 b中的起始偏移量。
 * len - 要读取的最大字节数。 
 * 从输入流读取len字节的
 * 数据到一个字节数组。实际读取的字节数作为整数返回。 
 * 该方法阻塞直到输入数据可用,检测到文件结束或抛出异常。 
 * 如果len为零,则不会读取字节并返回0; 
 * 否则,尝试读取至少一个字节。 如果没有字节可用,因为流是文件的-1则返
 * 回值-1 ; 否则,读取至少一个字节并存储到b 。
 *  
 * */
				String s = new String(a,0,n);
//		String(byte[] bytes, int offset, int length)
//		bytes - 要解码为字符的字节 
//		offset - 要解码的第一个字节的索引 
//		length - 要解码的字节数 
//		通过使用平台的默认字符集解码指定的字节子阵列来构造新的String。
//		新的String的长度是字符集的函数,因此可能不等于子数组的长度。
//		指定字节在默认字符集中无效时,此构造函数的行为是未指定的。
	            System.out.print(s);
			}
			in.close();
/*public void close()throws IOException
关闭此输入流并释放与流相关联的任何系统资源。
该close的方法InputStream什么都不做。
IOException异常类
表示发生某种类型的I / O异常。 
此类是由失败或中断的I / O操作产生的一般异常类。 */ 	
		}
		catch(IOException e) {
			System.out.println("File read Error"+e);
		}
	}

}

输出字节流:

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

public class test_main {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		byte[] a="新年快乐".getBytes();
		byte[] b="Happy New Year".getBytes();
/*		使用平台的默认字符集将该String编码为一系列字节,
		将结果存储到新的字节数组。*/
		File file = new File("a.txt");
		/*文件和目录路径名的抽象表示
		通过将给定的路径名字符串转换为抽象路径名来创建新的File实例。
		如果给定的字符串是空字符串,则结果是空的抽象路径名。
		参数-pathname-路径名字符串
		异常NullPointerException-if patchname==null*/
		System.out.println(file.getAbsolutePath());
		try {
			OutputStream out = new FileOutputStream(file);
			/*OutputStream这个抽象类是表示字节输出流的所有类的超类
			FileOutputStream文件输出流是用于将数据写入File或
			FileDescriptor的输出流。用于写入诸如图像数据的原始
			字节流。*/
			System.out.println(file.getName()+"的大小:"
					+file.length()+"字节");
//			getName返回此抽象路径名标识的文件或目录的名称
			out.write(a);
//			将b.lenth字节从指定的字节数组写入此文件输出流
			out.close();
//			关闭此文件输出流并释放与此流相关联的任何系统资源
			out = new FileOutputStream(file,true);
			/*创建文件输出流以写入由指定的File对象表示的文件
			如果第二个参数为true,则字节将写入文件的末尾而
			不是开头。*/
			System.out.println(file.getName()+"的大小:"
					+file.length()+"字节");
			out.write(b,0,b.length);
			/*将len字节从指定的字节数组开始,从偏移量off开始写入此
			文件输出流*/
			System.out.println(file.getName()+"的大小:"
					+file.length()+"字节");
			out.close();
		}
		catch(IOException e) {
			System.out.println("Error "+e);
		}
		System.out.println(file.getAbsolutePath());
	}

}


posted on 2017-12-08 20:25  MACHINE_001  阅读(97)  评论(0编辑  收藏  举报

导航