`

Java 常用API的运用,效率及技巧六

    博客分类:
  • java
 
阅读更多

6. Java IO系统

 

 

 

 

 

如果你刚刚接触JavaIO部分, 你可能会感觉无从入手, 确实Java提供了过多的类,反而让人感到很乱。

可将Java库的IO类分为输入与输出两个部分, 1.0版本中提供了两个抽象基类, 所有输入的类都从InputStream继承, 所有输出的类都从OutputStream继承, 1.1提供了两个新的基类, 负责输入的Reader与输出的Writer 但它们并不是用来替换原来老的InputStreamOutputStream 它们主要是让Java能更好的支持国际化的需求。 原来老的IO流层只支持8位字节流, 不能很好地控制16Unicode字符。 Java内含的char16位的Unicode 所以添加了ReaderWriter层次以提供对所有IO操作中的Unicode的支持。 除此之外新库也对速度进行了优化, 可比旧库更快地运行。

 

InputStream的类型:

1. 字节数组

2. String对象

3. 文件

4. 管道, 可以从另外一个输出流得到一个输入流

5. 一系列的其他流, 可以将这些流统一收集到单独的一个流内。

6. 其他起源(如socket流等)

 

还有一个是File类, Java中一个目录也是一个文件,可以用file.isFile()file.isDirectory()来进行判断是文件还是目录。 File 对象可能作为参数转换为文件流进行操作。 具体操作参照Java IO API

 

常用方法:

 

/**
 * 拼文件名, 在windows(\)跟unix(/)上的文件分割符是不一样的
 * 可以通过File类的静态成员变量separator取得
 */
public static String concatFileName(String dir, String fileName) {
	String fullFileName = "";

	if (dir.endsWith(File.separator)) {
		fullFileName = dir + fileName;
	} else {
		fullFileName = dir + File.separator + fileName;
	}
	
	return fullFileName;
}

/**
 * 从控制台读取输入的数据, System.in (InputStream) 先转换至InputStreamReader再用
 * BufferedReader进行读取.
 *
 */
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String str = "";
while (str != null) {
	str = in.readLine();
	// process(str);
}

/**
 * 从文件中按行进行读取数据处理
 */
BufferedReader in = new BufferedReader(new FileReader("infilename"));
String str;
while ((str = in.readLine()) != null) {
	// process(str);
}
in.close();

/**
 * 写数据至一个新的文件中去.
 */
BufferedWriter out = new BufferedWriter(new FileWriter("outfilename"));
out.write("a String");
out.close();

/**
 * 追加新的数据到一个文件中去, 如果原文件不存在
 * 则新建这个文件.
 */
BufferedWriter out = new BufferedWriter(new FileWriter("filename", true));
out.write("aString");
out.close();

/**
 * 将一个可序列化的Java的object以流方式写到一个文件中去中.
 */
ObjectOutput out = new ObjectOutputStream(new FileOutputStream("filename.ser"));
out.writeObject(object);
out.close();

/**
 * 从文件中恢复序列化过的Java Object
 */
ObjectInputStream in = new ObjectInputStream(new FileInputStream("filename.ser"));
Object object = (Object) in.readObject();
in.close();

/**
 * 以指定的编码方式从文件中读取数据
 */
BufferedReader in = new BufferedReader(new InputStreamReader(								new FileInputStream("infilename"), "UTF8"));
String str = in.readLine();

/**
 * 以指定的编码方式写数据到文件中
 */
Writer out = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream("outfilename"), "UTF8"));
out.write("a String");
out.close();

 

由上面的例子可以看出, 流之间可以互相转换, 如果想对流进行字符操作最好将之转换成BufferedReaderBufferedWriter这样可以提高读写的效率。

需要注意的是一般来说流的大小是得不到的, 虽然一般的InputStream都有一个available()的方法可以返回这个流可以读到的字节数, 不过这个方法有时候不会很准确, 比如在读取网络传输的流的时候, 取到的长度并不一定是真实有效的长度。

 

大家在写程序的时候可能已经注意到一些类都继承了java.io.Serializable这个接口, 其实继承了这个接口之后这个类的本身并不做任何事情, 只是这个类可以被序列化并通过流来进行传输, 并可被还原成原Object 这个流可以通过网络传输(EJB 中进行传递参数和返回值的Data Class), 也可以保存到文件中去(ObjectOutputStream)。

 

  • 大小: 32.3 KB
  • 大小: 28.7 KB
  • 大小: 26 KB
  • 大小: 22.4 KB
分享到:
评论

相关推荐

    Java 常用API的运用,效率及技巧

    ### Java 常用API的运用、效率及技巧 #### 1. Java 面向对象基本概念 Java 是一种完全面向对象的语言,除了几种基本数据类型(如 int、double 等)之外,所有事物都被视为对象。面向对象编程(OOP)的基本原则包括...

    java学习的常用API

    Java学习的常用API是开发者日常编码和学习过程中不可或缺的参考资料,尤其对于初学者,理解并掌握这些API至关重要。本资源集合了多个领域的API文档,包括Struts2、Spring、Hibernate、MySQL、Oracle以及一些基础技术...

    javaapi合集

    对于开发者来说,深入理解和熟练运用Java API是提高编程效率和编写高质量代码的关键。通过阅读JDK_API_1_6_zh_CN.CHM这份中文参考文档,开发者可以详细了解到每个类的功能、方法的使用以及参数的含义,从而更好地...

    java常用开发词汇

    例如,随着JDK的更新,Java 8引入了Lambda表达式和Stream API,这些新词汇的出现,既丰富了Java语言的表达力,也提升了开发者的开发效率。因此,对于Java开发词汇的未来发展,开发者应当保持持续的学习和关注。 在...

    JAVA初学者 第6到第8章(接口,异常,常用)

    在"JAVA初学者 第6到第8章"的学习资料中,你将深入理解这两个主题,并了解一些常用的Java编程技巧。 首先,让我们来探讨接口。在Java中,接口是一种完全抽象的类型,它只包含常量和抽象方法的声明,不包含任何实现...

    java 常用工具类

    以上就是关于"java 常用工具类"的一些关键知识点,了解并熟练运用这些工具类可以显著提高我们的编程效率,减少代码量,同时使得程序更易于理解和维护。通过阅读博文链接中的内容,可以深入学习和掌握更多实用技巧。

    Java常用方法大全

    以上仅是Java常用方法的一小部分,实际上Java API包含数千个方法。通过深入学习和实践,你可以掌握更多高效编程技巧,提升自己的编程能力。在实际工作中,结合《Java常用方法大全》这样的参考资料,可以随时查阅和...

    java常用正则表达式(转)

    这篇博客“java常用正则表达式(转)”可能详细介绍了Java如何使用正则表达式进行各种操作。虽然没有具体的描述内容,但我们可以从标题和标签中推测,这篇博客可能涵盖了以下几个方面: 1. **正则表达式基础**: -...

    Java编程模式与范例:基础开发技巧

    10. **标准库和API**:Java的标准库提供了大量预定义的类和方法,如日期时间API、网络编程API、XML处理等,熟悉这些API能极大地提高开发效率。 通过对这些知识点的学习和实践,开发者不仅能掌握Java的基础开发技巧...

    Java程序设计技巧1001例

    "Java程序设计技巧1001例"这个资源显然旨在帮助开发者深入理解和运用这些技巧。以下是一些重要的Java编程技巧,涵盖了基础到高级的各个方面。 1. **异常处理**:在Java中,使用try-catch-finally语句块来处理异常是...

    Java 的常用包与数组的复制与排序26

    在Java编程语言中,了解和熟练使用常用的包以及...理解并熟练运用这些知识,将有助于提升Java编程的效率和质量。在实际开发中,还会涉及到更多高级特性和技巧,如多线程、并发控制、设计模式等,都需要不断学习和实践。

    Java编程技巧.pdf

    在Java编程中,掌握一些高效的编码技巧能显著提升代码质量并减少错误。以下是一些关键的知识点,基于提供的文件内容...在实际开发中,灵活运用这些技巧,不仅可以编写出高质量的代码,还能避免常见错误,提升开发效率。

    Java常用框架实战教程,包含Activiti,Dubbo

    Java编程语言在IT行业中占有重要地位,而Java开发者在日常工作中常常会接触到各种框架,以提升开发效率和软件质量。本教程重点聚焦于两个著名的Java框架:Activiti和Dubbo,它们分别在业务流程管理和分布式服务领域...

    java程序设计技巧1001例

    在Java程序设计的世界里,掌握各种技巧是提升编程效率和代码质量的关键。"Java程序设计技巧1001例"是一本深入浅出的指南,它涵盖了从基础到高级的各种编程实践,旨在帮助开发者们更好地理解和运用Java语言。在这个...

    JAVA2程序设计实务入门

    这些API的使用是Java编程实践中的常见任务,理解和熟练运用它们能大大提高开发效率。 在描述中提到“实务入门”,这意味着本书不仅会讲解理论知识,还会结合实际案例,提供代码示例和练习,帮助读者将所学知识应用...

    Java手机短信项目源码Java实用源码整理learns

    3. **Java框架**:Spring、MyBatis、Hibernate等,是企业级开发中常用的工具,掌握它们可以提高开发效率。 4. **Java最佳实践**:包括代码规范、设计模式、重构技巧等,帮助写出更高质量的代码。 5. **开源社区**...

    Java的常用的正则表达式

    下面我们将深入探讨Java中常用的正则表达式及其应用。 1. **正则表达式基础** - **字符类**:`[]`用于定义一个字符集合,例如`[abc]`匹配'a'、'b'或'c'。 - **量词**:`*`表示零个或多个,`+`表示一个或多个,`?`...

    Java程序设计教程第五版教材(美国)上的例题

    Java程序设计是编程领域中的重要一环,尤其对于初学者来说,掌握其基本概念和实践技巧至关重要。"Java程序设计教程第五版教材(美国)"是一本面向初学者的指南,旨在帮助读者深入理解Java编程语言,并通过实际例题来...

    平安Java考试题库

    8. **JVM**: 对Java虚拟机(JVM)的理解,包括内存管理(堆、栈、方法区)、垃圾回收机制、类加载过程以及性能优化技巧,对于写出高效且稳定的Java应用至关重要。 9. **Spring框架**: Spring是Java企业级应用中最...

Global site tag (gtag.js) - Google Analytics