⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 io.txt

📁 Java大部分的基础知识,EJB3,EJB2,WEBSERVICE,SOAP,JMS,MQ,还有些面试题
💻 TXT
字号:
一、io流总结
	io流是java非常重要的组件,有输入流及输出流,输入流是从文件到内存,输出流是从内存到
	文件,输入流通用方法主要是read()或readLine(),输出流的主要方法是write或print。有低层
	也有高层流,在创建高层流通过构造子将低层流注入到高层流中,让低层流的功能与高层流的功
	能组合在一起。如果有缓存的高层流如BufferedInputStream、BufferedOuputStream、
	BufferedReader、BufferedWriter要想写入文件必须flush或close。io流用的是装饰模式
	,有通用接口、本原、装饰,因为可以将通用接口聚集到装饰中,所以可以通过构造子将
	本原或装饰注入到另一个装饰中,将所有相关的装饰、本原的功能进行随意组合生成功能更加
	强大的对象。当以字节、字节数组或字符、字符数组读取文件的内容,结束条件是-1,以字符串
	的方式读取时,结束条件是否为空。
二、字节流:处理是二进制文件,通过专用的软才可以打开。xls,doc,mpg,数据库
	输入:
		体系结构
					InputStream
			FileInputStream			FilterInputStream
						BufferedInputStream      ObjectInputStream	DataInputStream  
		流的转化:
			FileInputStream--->BufferedInputStream:具有缓存
			FileInputStream-->ObjectInputStream:返序列化将文件转化为对象
			FileInputStream-->DataInputStream:可以直接得到基础的数据类型
		判断结束:
			--读取一个字节
			int temp=fis.read();
			while(temp!=-1)
			{
			
			}
			--读取字节数组
			byte[] bytes=new byte[1024*20];
			int result=fis.read(bytes);
			while(result!=-1)
			{
				result=fis.read(bytes);
			}
	输出:
		体系结构
					OutputStream
			FileOutputStream			FilterOutputStream
						BufferedOutputStream      ObjectOutputStream	DataOutputStream PrintStream
		流的转化:
			FileOutputStream--->BufferedOutputStream:具有缓存
			FileOutputStream-->ObjectOutputStream:将对象转化为文件
			FileOutputStream-->DataOutputStream:可以将基础的数据类型直接写入文件
		写入的方式:
			--写一个字节
			int temp=System.in.read();
			fos.write(temp);
			--写字节数组
			byte[] bytes=new byte[1024*20];
			int result=fis.read(bytes);
			fos.write(bytes,0,result);
			--将字节转化为字符串
			String temp=new String(bytes,0,result);
三、字符流:处理的是文本文件,通过记事本可以打开。
	输入:
		体系结构
					Reader
			FileReader		InputStreamReader:将字节流转化为字符流
						BufferedReader     
		流的转化:
			FileReader--->BufferedReader:具有缓存
			System.in-->InputStreamReader--->BufferedReader:将键盘的字节流转化为字符串,再转化为高层流。
			FileInputStream--->InputStreamReader-->BufferedRearder:将文件的字节流转化为字符流,再转化为高层流。
		判断结束:
			--读取一个字符
			int temp=fis.read();
			while(temp!=-1)
			{
			
			}
			--读取字节数组
			char[] chars=new byte[1024*20];
			int result=fis.read(chars);
			while(result!=-1)
			{
				result=fis.read(chars);
			}
			--读取一行
			BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
			String temp=br.readLine();
			while(!"stop".equals(temp))
			{
				temp=br.readLine();
			}
	输出:
		体系结构
					Writer
			FileWriter			OutputStreamWriter
						BufferedWriter      PrintWriter
		流的转化:
			FileWriter-->BufferedWriter:具有缓存
			FileWriter-->PrintWriter:将对象转化为文件
			FileWriter-->BufferedWriter-->PrintWriter
		写入的方式:
			--写一个字节
			int temp=System.in.read();
			fos.write(temp);
			--写字符数组
			char[] chars=new char[1024*20];
			int result=fis.read(chars);
			fos.write(chars,0,result);
			--将字节转化为字符串
			String temp=new String(chars,0,result);
三、File:是对文件或文件夹整体的操作如创建、删除、是否存在、是否是文件、是否是目录、得到所有子目录
	File f=new File("c:\a.txt");
	File files[]=f.fileList();


一、io流
二、装饰模式
	有三个角色,分别是通用接口、本原、装饰,本原与装饰都实现了
	通用接口,因为将通用接口聚集到了装饰中,所以可以将本原或
	装饰聚集到另一个装饰中。通过构造子将一个装饰注入到另一个装饰
	中后,可以将多个装饰的功能随意组合,生成更强大的功能。
	其实用继承也是可以实现的,但多写很多类。
三、流的特点:
	流分为输入流及输出流,输入流是从文件到内存,输出流是从内存到文件。
	读取输入流的通用方法是read或readLine
	写入到输出流的通用方法是write或print
	流分为低层流与高层流,在创建高层流时通过构造子将低层流注入到高层流中,
	不管是字节还是字符流都有很多高层流,根据自己的功能需要选择或组合实现。
	如果用了带缓存的高层以必须flush或close将信息写入到文件中。
四、按存储分类
	字节流:通过专用的软件才可以访问的文件。
		xls、doc、pdf、数据库、rm、mp3
	字符流:纯文本,用记事本就可打开
		*.java *.txt *.c *.xml *.html
七、io流的实现
	字节流:
		输入:
			输入的体系结构
							InputStream
				FileInputStream(文件的读写)		FilterInputStream(高层流)
				
						BufferedInputStream		ObjectInputStream		DataInputStream
			从低层流转化为高层流:
				FileInputStream---->BufferedInputStream
				FileInputStream--->ObjectInputStream
				FileInputStream--->DataInputStream
				FileInputStream---->BufferedInputStream-->ObjectInputStream
		输出:
			输出的体系结构:
							OutputStream
				FiletOutputStream			FilterOutputStream(高层流)
						BufferedOutputStream		ObjectOutputStream	DataOuputStream   PrintStream
				PrintStream:在流中很重要,e.printStackTrace()及System.out.println()都是其实例,
					    即可以打印字节,也可以打印字符。
			从低层流转化为高层流:
				FileOutputStream---->BufferedOutputStream
				FileOutputStream--->ObjectOutputStream
				FileOutputStream--->DataOutputStream
				FileOutputStream---->BufferedOutputStream-->ObjectOutputStream
				FileOutputStream---->PrintStream
				FileOutputStream---->BufferedOutputStream-->PrintStream
		序列化:可以将一个对象写到文件中,可以读取文件将其转为对象。
			1、对象所对应的类必须实现Serializable接口。
	字符流:操作是字符
		输入
			输入的体系结构
						Reader
				FileReader		InputStreamReader(将字节转化为字符流)
							BufferedReader
			输入的流的转化:
				InputStream--->InputStreamReader-->BufferedReader
				FileReader-->BufferedReader
		输出:
			输入的体系结构
						Writer
				FileWriter		OutputStreamWriter(将字节转化为字符流)
							BufferedWriter    PrintWriter
八、PrintStream、BufferedWriter、PrintWriter
	PrintStream:属于字节流的高层流,即可以打印字节也或打印字符
		e.printStackTrace()及System.out.println是其实例
	BufferedWriter、PrintWriter:属于字符流,只可以打印字符,具都有缓存
		要想写入文件必须close或flush.
九、File及流的区别
	File:是对文件整体的操作,如删、是否存在、得到文件容量、是文件还是目录。		
		
Java IO的一般使用原则: 
 一、按数据来源(去向)分类: 
 1、是文件: FileInputStream, FileOutputStream, FileReader, FileWriter 
 2、是byte[]:ByteArrayInputStream, ByteArrayOutputStream 
 3、是Char[]: CharArrayReader, CharArrayWriter 
 4、是String: StringBufferInputStream, StringReader, StringWriter 
 5、网络数据流:InputStream, OutputStream, Reader, Writer 
 
二、按是否格式化输出分: 
1、要格式化输出:PrintStream, PrintWriter 
三、按是否要缓冲分: 
1、要缓冲:BufferedInputStream, BufferedOutputStream, BufferedReader, BufferedWriter 
四、按数据格式分: 
1、二进制格式(只要不能确定是纯文本的): InputStream, OutputStream及其所有带Stream结束的子类 
2、纯文本格式(含纯英文与汉字或其他编码方式);Reader, Writer及其所有带Reader, Writer的子类 
五、按输入输出分: 
1、输入:Reader, InputStream类型的子类 
2、输出:Writer, OutputStream类型的子类 
六、特殊需要: 
1、从Stream到Reader,Writer的转换类:InputStreamReader, OutputStreamWriter 
2、对象输入输出:ObjectInputStream, ObjectOutputStream 
3、进程间通信:PipeInputStream, PipeOutputStream, PipeReader, PipeWriter 
4、合并输入:SequenceInputStream 
5、更特殊的需要:PushbackInputStream, PushbackReader, LineNumberInputStream, LineNumberReader 
决定使用哪个类以及它的构造进程的一般准则如下(不考虑特殊需要): 
首先,考虑最原始的数据格式是什么: 原则四 
第二,是输入还是输出:原则五 
第三,是否需要转换流:原则六第1点 
第四,数据来源(去向)是什么:原则一 
第五,是否要缓冲:原则三 
(特别注明:一定要注意的是readLine()是否有定义,有什么比read, write更特殊的输入或输出方法) 
第六,是否要格式化输出:原则二

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -