论坛首页 Java企业应用论坛

java之IO 总结和笔记

浏览 15054 次
精华帖 (1) :: 良好帖 (3) :: 新手帖 (12) :: 隐藏帖 (3)
作者 正文
   发表时间:2010-10-26  
创建一个文件
File f=new File("1.txt");
f.createNewFile();//创建文件
f.mkdir();//创建目录
f.deleteOnExit();//程序结束时自动删除创建的文件
File.separator 是跨系统文件分隔符


//list方法,列出文件夹下所有的文件和目录名称,如果过滤,传入FilenameFilter,下面是只返回扩展名是java的文件名
String[] names=f.list(new FilenameFilter()
		{
			public boolean accept(File dir,String name)
			{
				return name.indexOf(".java")!=-1;
			}
		});


输入输出流:
节点流
过滤流
InputStream                OutputStream
FileInputStream            FileOutputStream

BufferedInputStream 带缓冲过滤流
BufferedOutputStream 带缓冲输出过滤流
DataInputStream  提供读写java中基本数据类型的过滤流

PipedInputStream和PipedOutputStream
管道流,用于线程间的通信。
一个线程的PipedInputStream对象从另一个线程的PipedOutputStream对象读取输入。
要使管道流有用,必须同时构造管道输入流和管道输出流。

import java.io.*;
class PipedStreamTest
{
	public static void main(String[] args)
	{
		PipedOutputStream pos=new PipedOutputStream();
		PipedInputStream pis=new PipedInputStream();
		try
		{
			pos.connect(pis);
			new Producer(pos).start();
			new Consumer(pis).start();
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
		
	}
}

class Producer extends Thread
{
	private PipedOutputStream pos;
	public Producer(PipedOutputStream pos)
	{
		this.pos=pos;
	}
	public void run()
	{
		try
		{
			pos.write("Hello,welcome you!".getBytes());
			pos.close();
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
	}
}

class Consumer extends Thread
{
	private PipedInputStream pis;
	public Consumer(PipedInputStream pis)
	{
		this.pis=pis;
	}
	public void run()
	{
		try
		{
			byte[] buf=new byte[100];
			int len=pis.read(buf);
			System.out.println(new String(buf,0,len));
			pis.close();
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
	}
}



Reader和Writer这两个抽象类主要用来读写字符流

InputStreamReader OutputStreamWriter 字节流和字符流的桥梁

FileInputStream fis=new FileInputStream("1.txt");
InputStreamReader isr=new InputStreamReader(fis);
BufferedReader br=new BufferedReader(isr);
System.out.println(br.readLine());
br.close();

InputStreamReader isr=new InputStreamReader(System.in);
BufferedReader br=new BufferedReader(isr);
String strLine;
while((strLine=br.readLine())!=null)
{
System.out.println(strLine);
}
br.close();




   发表时间:2010-10-26  
建议楼主 结合 装饰者模式 一起看
JAVA与模式 阎宏 有专门一章讲 IO库的设计
0 请登录后投票
   发表时间:2010-10-26  
programlv 写道
建议楼主 结合 装饰者模式 一起看
JAVA与模式 阎宏 有专门一章讲 IO库的设计


支持 我看了两边还在看
0 请登录后投票
   发表时间:2010-10-26  
不是我挑剔。。楼主,在je总结io,我认为如果连nio都不提。。此帖必然悲剧。
0 请登录后投票
   发表时间:2010-10-27  
第二段代码有问题哦
我要是有个文件叫think.in.java.pdf
你也给列出来了
0 请登录后投票
   发表时间:2010-10-27  
出乎我意料,竟然有人投良好。。但我仍然相信,此帖会悲剧。
0 请登录后投票
   发表时间:2010-10-27  
aoliwen521 写道
不是我挑剔。。楼主,在je总结io,我认为如果连nio都不提。。此帖必然悲剧。

同意,必然悲剧。
0 请登录后投票
   发表时间:2010-10-27  
楼主 这个总结 太简单了点 没啥作用
0 请登录后投票
   发表时间:2010-10-27  
无足轻重。。。

没什么价值
0 请登录后投票
   发表时间:2010-10-27  
学习下管道流的例子,以前没用过,谢谢总结!
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics