`
cyxlgzs
  • 浏览: 90277 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Java实践之路——流

 
阅读更多

1、概述:流主要分为字节流和字符流两种。和底层设备打交道的流永远都是字节流,因为底层设备接收的都是二进制的01代码。在java中字节流继承于InputStream和OutputStream,字符流继承于InputStreamReader和OutputStreamWriter

2、根据Java中流的结构,画出一下类结构图(部分)


3、举例应用

以下代码主要实现了输入流和输出流的部分应用,代码如下

package cyxl.io.test;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;

public class IOTest {

	
	public static void main(String[] args) {
		write("iotest.txt",1);
		read("iotest.txt",3);
	}
	
	public static void write(String filename,int type)
	{
		String str="new line\n";
		try
		{
			if(type==1)
			{
				FileOutputStream fos=new FileOutputStream(filename,true);
				fos.write(str.getBytes("GB2312"));
				fos.close();
			}
			else if(type==2)
			{
				FileWriter fw=new FileWriter(filename,true);
				fw.write(str);
				fw.close();
			}
			else if(type==3)
			{
				PrintWriter pw=new PrintWriter(filename);
				pw.write(str);
				pw.close();
			}
		}
		catch(IOException e)
		{
			e.printStackTrace();
		}
	}
	public static void read(String filename,int type)
	{
		try
		{
			if(type==1)
			{
				FileInputStream fis=new FileInputStream(filename);
				byte[] buf=new byte[1024];
				int len=fis.read(buf);
				String str=new String(buf,0,len);
				System.out.print(str);
			}
			else if(type==2)
			{
				FileReader fr=new FileReader(filename);
				char[] buf=new char[1024];
				int len=fr.read(buf);
				String str=new String(buf,0,len);
				System.out.print(str);
			}
			else if(type==3)
			{
				BufferedReader br=new BufferedReader(
						new InputStreamReader(
								new FileInputStream(filename)
						)
				);
				String str=null;
				while((str=br.readLine())!=null)
				{
					System.out.println(str);
				}
				br.close();
			}
		}
		catch(IOException e)
		{
			e.printStackTrace();
		}
	}

}

5、总结,流相关的类都在java.io包中。应注意的问题有

(1)、注意流的释放,否则很可能导致内存溢出等现象,造成内存资源浪费

(2)、注意流的并发性(JDK中默认添加了synchronized)

分享到:
评论

相关推荐

    Java全能学习面试手册——Java精品实战技术书.zip

    04 JBPM工作流开发指南 .pdf 05 MySQL高性能书籍_第3版(中文).pdf 06 MySQL技术内幕 InnoDB存储引擎 第2版.pdf 07 Practical.API.Design.Confessions.of.a.Java.Framework.Architect.pdf 08 陈皓-Cloud Native 云...

    Visual C++实践与提高-COM和COM+篇『PDF』

    4.2.3 流对象和IStream接口 4.2.4 结构化存储示例——例程StructStore 4.3 永久对象 4.3.1 永久接口 4.3.2 永久对象编程——例程PersistText 4.3.3 永久对象客户编程——例程PersistClient 4.4 命名与绑定技术 4.4.1...

    Java实现的J2EE工作流系统,可用作毕业设计,课程设计

    源代码——提供了一套完整、经过良好注释的Java源代码,实现了J2EE工作流系统项目的全部功能。代码结构清晰,逻辑严谨,是学习Java编程和项目实践的优秀材料。 毕业论文——包含了一篇探讨J2EE工作流系统项目背景、...

    Java SE实践教程 源代码 下载

    4.1.1 流——Java I/O的基础 72 4.1.2 Java I/O库 72 4.2 练习 74 4.2.1 数据传送的通道 74 4.2.2 管道的一端 76 4.2.3 文件处理 78 4.2.4 基于对象的读写 80 4.2.5 NIO 85 4.3 小结 89 第5章 如何走得更稳...

    Java SE实践教程 pdf格式电子书 下载(四) 更新

    4.1.1 流——Java I/O的基础 72 4.1.2 Java I/O库 72 4.2 练习 74 4.2.1 数据传送的通道 74 4.2.2 管道的一端 76 4.2.3 文件处理 78 4.2.4 基于对象的读写 80 4.2.5 NIO 85 4.3 小结 89 第5章 如何走得更稳...

    Java程序设计基础实训

    Java是面向对象的、支持多线程的解释型网络编程语言。它是目前Internet最流行的编程语言之一,具有高度的安全性、可移植性和代码可重用性。

    疯狂Workflow讲义——基于Activiti的工作流应用开发.part3

    《疯狂Workflow讲义——基于Activiti的工作流应用开发》的最后通过讲解一个办公自动化系统的开发过程,让读者更了解Activiti在实际生产中的使用,让本书的内容不仅仅停留在理论的层次,更为读者开辟了实践的道路。...

    Java SE实践教程 pdf格式电子书 下载(一) 更新

    4.1.1 流——Java I/O的基础 72 4.1.2 Java I/O库 72 4.2 练习 74 4.2.1 数据传送的通道 74 4.2.2 管道的一端 76 4.2.3 文件处理 78 4.2.4 基于对象的读写 80 4.2.5 NIO 85 4.3 小结 89 第5章 如何走得更稳...

    最新Java面试题视频网盘,Java面试题84集、java面试专属及面试必问课程

    │ │ 9.JAVA并发编程之多线程并发同步业务场景与解决方案.wmv │ │ │ ├─10.微服务架构之Spring Cloud Eureka 场景分析与实战 │ │ 10.微服务架构之Spring Cloud Eureka 场景分析与实战.wmv │ │ │ ├─11....

    疯狂Workflow讲义——基于Activiti的工作流应用开发.part2

    《疯狂Workflow讲义——基于Activiti的工作流应用开发》的最后通过讲解一个办公自动化系统的开发过程,让读者更了解Activiti在实际生产中的使用,让本书的内容不仅仅停留在理论的层次,更为读者开辟了实践的道路。

    学通Java的24堂课

    1.4.1 基本功训练1——更换java_home环境变量 16 1.4.2 基本功训练2——提取path变量值创建新环境变量 17 1.4.3 基本功训练3——输出字符表情 17 1.4.4 基本功训练4——输出“*”字符组成的三角形 18 1.5 情景...

    程序设计入门—Java语言-视频教程网盘链接提取码下载 .txt

    本课程是以Java语言来讲授程序设计的入门知识,而非具体教授Java语言,关于Java语言的全面知识,还需要学习本课程的后续课程——“Java语言程序设计进阶”。 程序设计是实践性很强的课程,该课程的学习有其自身的...

    “121工程”模式下的Java课程教学改革实践.pdf

    分析软件外包业主流开发技术——java技术在高校教学中的诸多不足,结合校企合作模式"121工程"模式,从授课内容、教材体系、实习实训、评估体系以及教辅等环节论述java课程的教学改革和实践。

    解密搜索引擎技术实战-Lucene&java;精华版

    《解密搜索引擎技术实战——Lucene&Java;精华版(第3版)》是猎兔搜索开发团队的软件研发和教学实践的经验汇总。《解密搜索引擎技术实战——Lucene&Java;精华版(第3版)》总结搜索引擎相关理论与实际解决方案,并给...

    讲透JAVAStream的collect用法与原理远比你想象的更强大

    大家好,又见面了。 在我前面的文章《 吃透JAVA的Stream流操作,多年实践总结》中呢,对Stream的整体情况进行了细致全面的讲解,也大概介绍了下结果收集器Collectors的常见用法 ——

    JBPM4工作流应用开始指南.rar

    第一篇介绍工作流管理技术的概念、起源和发展历程,开源工作流选型,以及jBPM——这个迄今为止最成功的Java开源工作流项目的“前世今生”。此外,本篇还可以帮助读者快速上手jBPM4、使用jBPM4开发企业流程应用,包括...

    Hibernate实战(第2版) 中文版 part1

    随着EJB 3.0和Java Persistence标准的发布,Hibernate也迎来了更加成熟的新版本——Hibernate 3.2。新版本实现了Java Persistence标准,既可以用于流行的开源技术组合(如Spring、Struts和Seam等)。也可以与其他EJB...

    Hibernate实战(第2版) 中文版 part4

    随着EJB 3.0和Java Persistence标准的发布,Hibernate也迎来了更加成熟的新版本——Hibernate 3.2。新版本实现了Java Persistence标准,既可以用于流行的开源技术组合(如Spring、Struts和Seam等)。也可以与其他EJB...

    Hibernate实战(第2版) 中文版 part5

    随着EJB 3.0和Java Persistence标准的发布,Hibernate也迎来了更加成熟的新版本——Hibernate 3.2。新版本实现了Java Persistence标准,既可以用于流行的开源技术组合(如Spring、Struts和Seam等)。也可以与其他EJB...

    Hibernate实战(第2版) 中文版 part3

    随着EJB 3.0和Java Persistence标准的发布,Hibernate也迎来了更加成熟的新版本——Hibernate 3.2。新版本实现了Java Persistence标准,既可以用于流行的开源技术组合(如Spring、Struts和Seam等)。也可以与其他EJB...

Global site tag (gtag.js) - Google Analytics