更新时间:2015年12月29日13时23分 来源:传智播客Java培训学院 浏览次数:
/** * 使用IO读取指定文件的前1024个字节的内容 * @param file 指定文件名称 * @throws java.io.IOException IO异常 */ public void ioRead(String file) throws IOException { FileInputStream in = new FileInputStream(file); byte[] b = new byte[1024]; in.read( b ); System.out.println(new String(b)); } /** * 使用NIO读取指定文件的前1024个字节的内容 * @param file 指定文件名称 * @throws java.io.IOException IO异常 */ public void nioRead(Stirng file) thorws IOException { FileInputStream in = new FileInputStream(file); FileChannel channel = in.getChanel(); ByteBuffer buffer = ByteBuffer.allocate(1024); channel.read( buffer ); byte[] b = buffer.array(); System.out.println( new String( b )); } |
// 第一步是获取通道。我们从 FileInputStream 获取通道: FileInputStream fin = new FileInputStream( "readandshow.txt" ); FileChannel fc = fin.getChannel(); // 下一步是创建缓冲区: ByteBuffer buffer = ByteBuffer.allocate( 1024 ); // 最后,需要将数据从通道读到缓冲区中: fc.read( buffer ); |
// 首先从 FileOutputStream 获取一个通道: FileOutputStream fout = new FileOutputStream( "writesomebytes.txt" ); FileChannel fc = fout.getChannel(); // 下一步是创建一个缓冲区并在其中放入一些数据,这里,用data来表示一个持有数据的数组。 ByteBuffer buffer = ByteBuffer.allocate( 1024 ); for (int i=0; i<data.length; ++i) { buffer.put( data[i] ); } buffer.flip(); // 最后一步是写入缓冲区中: fc.write( buffer ); |
/** * 将一个文件的所有内容拷贝到另一个文件中。 * 执行三个基本操作: * 首先创建一个 Buffer * 然后从源文件中将数据读到这个缓冲区中 * 最后将缓冲区写入目标文件 * 程序不断重复(读、写、读、写) 直到源文件结束 */ public static void main(String[] args) throws Exception { String infile = "C:\\copy.sql";String outfile = "C:\\copy.txt"; // 获取源文件和目标文件的输入输出流 FileInputStream fin = new FileInputStream(infile); FileOutputStream fout = new FileOutputStream(outfile); // 获取输入输出通道 FileChannel fcin = fin.getChannel(); FileChannel fcout = fout.getChannel(); // 创建缓冲区 ByteBuffer buffer = ByteBuffer.allocate(1024); while (true) { // clear方法,重设缓冲区,使它可以接受读入的数据 buffer.clear(); // 从输入通道中将数据读到缓冲区 int r = fcin.read(buffer); // read方法,返回读取的字节数,可能为零,如果该通道已到达流的末尾则返回-1 if (r == -1) { break; } // flip方法,让缓冲区可以将新读入的数据,写入到另一个通道中 buffer.flip(); // 从输出通道中将数据写入缓冲区 fcout.write(buffer); } } |