欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java nio实例一 博客分类: javajava nio javanio实例 

程序员文章站 2024-02-13 16:31:22
...

java nio的实例

 

public class NewIOChannel {
	
	private String file = "";
	private String file2 = "";
	
	@Before
	public void init(){
		file = NewIOChannel.class.getResource("").getPath()+"\\myfile.txt";
		file2 = NewIOChannel.class.getResource("").getPath()+"\\myfile2.txt";
		System.out.println(file);
	}
	
	/**
	 * outputStream channel写文件
	 * @throws IOException
	 */
	@Test
	public void FileTest() throws IOException{
		String info[] = {"wang","fwefwe","北京"};
		File file = new File(this.file);
		
		FileOutputStream output = null;
		output = new FileOutputStream(file);
		FileChannel fout = null;
		fout = output.getChannel();
		ByteBuffer buf = ByteBuffer.allocate(1024);
		for (int i = 0; i < info.length; i++) {
			buf.put(info[i].getBytes("UTF-8"));
		}
		buf.flip();
		fout.write(buf);
		fout.close();
		output.close();
	}
	
	@Test
	public void writeFile()throws IOException{
		File file = new File(this.file);
		FileInputStream input = new FileInputStream(file);
		FileChannel fileChannel = input.getChannel();
		byte data[] = new byte[(int)file.length()];
//		MappedByteBuffer mbb = fileChannel.map(FileChannel.MapMode.READ_ONLY, 0, file.length());
//		int foot = 0;
//		while(mbb.hasRemaining())
//			data[foot++] = mbb.get();
		ByteBuffer bufs = ByteBuffer.wrap(data);
		fileChannel.read(bufs);
		System.out.println(new String(data));
		fileChannel.close();
	}
	
	@Test
	public void writereadFile() throws IOException{
		File file = new File(this.file);
		File file2 = new File(this.file2);
		FileInputStream input = new FileInputStream(file);
		FileOutputStream output = new FileOutputStream(file2);
		
		FileChannel fout = output.getChannel();
		FileChannel fin = input.getChannel();
		ByteBuffer buf = ByteBuffer.allocate(1024);
		int temp =0;
		while ((temp = fin.read(buf)) != -1) {
			buf.flip();
			fout.write(buf);
			buf.clear();
		}
		fin.close();
		fout.close();
	}
	
	@Test
	public void FileLockDemo() throws IOException, InterruptedException{
		File file = new File(this.file);
		FileOutputStream output = new FileOutputStream(file,true);
		FileChannel fout = output.getChannel();
		FileLock lock = fout.tryLock();
		if(lock != null){
			System.out.println(file.getName()+"文件被锁定5秒");
			Thread.sleep(5000);
			lock.release();
			System.out.println(file.getName()+"文件被解锁");
		}
		fout.close();
		output.close();
	}
}
 
相关标签: java nio 实例