- 浏览: 919571 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (537)
- Java SE (114)
- Struts (18)
- Hibernate (25)
- Spring (3)
- Page_Tech (41)
- Others (87)
- Database (29)
- Server (24)
- OpenSource_Tools (15)
- IDE_Tool (22)
- Algorithm (28)
- Interview (22)
- Test (28)
- Hardware (1)
- Mainframe (25)
- Web application (4)
- Linux (3)
- PHP (17)
- Android (1)
- Perl (6)
- ubuntu (1)
- Java EE (9)
- Web Analysis (5)
- Node.js (2)
- javascript (2)
最新评论
-
一键注册:
request.getRequestURL()和request.getRequestURI() -
SuperCustomer:
...
SED的暂存空间和模式空间 -
juyo_ch:
讲得挺好理解的,学习了
java 死锁及解决 -
chinaalex:
最后一题答案正确,但是分析有误.按照如下过程,上一行为瓶,下一 ...
zz智力题 -
liaowuxukong:
多谢博主啦,弱弱的了解了一点。
C++/Java 实现多态的方法(C++)
在 java.io 包中 File 是一个常用类。这个名字容易产生一些误会。它表示一个文件名
(或目录名),而不是文件本身。文件在不同的操作系统下有不同的命名规则,Java 提供
File 类,通过 File 类隐藏这些名字上的不同。
File 的方法是对文件以一个整体形势进行操作:删除文件、创建目录、列出目录
、查询文件大小和修改日期等。虽然 File 类提供了操作目录和目录下文件的方法,但
File 类没有提供操作文件内容的方法,没法对字符或字进行读写。顺序文件的 I/O 是
通过一个抽象流来实现的。
stream 是一个对象,数据能够顺序的从中读出,或者能够顺序的写入其中。
java.io 包中有 40多个 stream 类。InputStream, OutputStream 和他们各自
的子类都用于读写 字节流 对象(byte , 一个byte 8 位)。 Reader , Writer 和他
们各自的子类用于读写 Unicode 字符流对象(char, 一个字符包含 2个字节)。
除了这些流之外, java.util.zip 包含数据压缩解压缩的数据流类。
字节输入流
BufferedInputStream
从一个 InputStream 中读取一个缓冲区,然后返回整个缓冲区的内容,使小量读写更
有效。
ByteArrayInputStream
从一个字节数组中顺序读入多个字节
CheckedInputStream
这个 java.util.zip 包中的类计算从 InputStream 中读入内容的校验合
DataInputStream
从一个 InputStream 中读取 java 基本类型的二进制表达形式
FileInputStream
从文件中顺序读入多个字节
FilterInputStream
字节输入流的过滤器类的超类
GZIPInputStream
这个 java.io.zip 包中的类从 InputStream 中读入以 GZIP 形式压缩的内容
InflaterInputStream
GZIPInputStream 和 ZipInputStream 的超类
InputStream
所有字节输入流的超类
ObjectInputStream
从一个字节流读入二进制形式的 Java 对象和基本值,这个类用来反序列化对象。
PipedInputStream
读取写入到它所连接的 PipedOutputStream中的多个字节,在多线程程序中使用
PushbackInputStream
将一个固定大小的“回推缓冲区”添加到输入流中,从而这些字节内容可以是"读不出"
的,在某些解析程序中有用。
SequenceInputStream
从两个或两个以上的输入流中顺序读入多个字节的内容,这些输入流就好像单独的一个
输入流一样。
ZipInputStream
用来解压 ZIP 文件中的多个项目
字符输入流
BufferedReader
从 Reader 中读取多个字符到一个缓冲区,然后返回整个缓冲区内容。使小量读写更加
有效。
CharArrayReader
从一个 Char 数组中顺序读入多个字符
FileReader
从文件中顺序读入多个字符,是 InputStreamReader 的子类,能从一个自动创建的
FileInputStream 中读取数据。
FilterReader
字符输入流过滤器类的超类
InputStreamReader
从一个字节输入流读入字符,使用默认的编码方式或指定的编码方式将字节转化成字符
LineNumberReader
读取多行文本,并记录已经读取多少内容。
PipedReader
读取它所连接的 PipedOutputStream 中的多个字符。在多线程程序中使用。
PushbackReader
将固定大小的“回推缓冲区”添加到 Reader 中,从而这些内容可以是 “读不出”的
,这在某些解析程序中很有用。
Reader
所有字符输入流的超类
StringReader
从一个字符串中顺序读入字符
-------------------------------------------------------------
字节输出流
BufferedOutputStream
将字节按缓冲区输出,当缓冲区满时才将其中字节写往 OutputStream
ByteArrayOutputStream
往字节数组中写入字节
CheckedOutputStream
这个 java.util.zip 包中的类,计算写入 OutputStream 中数据的校验合
DataOutputStream
以 java 基本类型的二进制形式向 OutputStream 写入
DeflaterOutputStream
GZIPOutputStream 和 ZipOutputStream 的超类
FileOutputStream
向文件中顺序写入字节
FilterOutputStream
字节输出流过滤器类的超类
GZIPOutputStream
这个 java.util.zip 包中的类,使用 GZIP 格式压缩写入其中的内容
然后输出
ObjectOutputStream
向一个 OutputStream 写入二进制形式的 java 对象和基本类型,这个类用来序列化
对象。
PipedOutputStream
将字节写入与他连接的 PipedInputStream 中,在多线程程序中使用
PrintStream
写入文本形式的 java 对象和基本类型,不推荐使用 PrintStream ,使用 PrintWriter 代替
ZipOutputStream
这个 java.util.zip 包中的类压缩 ZIP 文件中的数据
------------------------------------------------------------
字符输出流
BufferedWriter
为提高效率将字符按缓冲区输出,仅当缓冲区满时才将字符写往输出流。
CharArrayWriter
向字符数组中写入字符
FileWriter
向文件中顺序写入字符,它是 OutputStreamWriter 的一个子类,能自动创建
一个FileOutputStream.
FilterWriter
字符输出流过率器类的超类
OutputStreamWriter
将字符写入字节输出流,使用默认编码方式或指定编码方式将字符转化成字节。
PipedWriter
将字符写入他连接的 PipedReader 中,在多线程程序中用到
StringWriter
将字符顺序写入一个内部创建的 StringBuffer 中
PrintWriter
在Writer 中写入文本形式的 Java 对象和基本类型
Writer
字符输出流的超类
----------------------
文件 copy 的 例子 代码
- /**
- * io 例子,文件copy 的一个类,加入了相关检验
- */
- package cn.lokvin.examples.io;
- import java.io.BufferedReader;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.InputStreamReader;
- /**
- * @author lokvin
- *
- */
- public class FileCopy {
- /**
- * @param args
- */
- public static void main(String[] args) {
- if(args.length != 2)
- System.err.println("Usage: java FileCopy <source> <destination>");
- else {
- try {
- copy(args[0], args[1]);
- }catch(IOException ex) {
- System.err.println(ex.getMessage());
- }
- }
- }
- /**
- * 文件复制的静态方法,复制前进行检查
- * @param from_name
- * @param to_name
- */
- public static void copy(String from_name, String to_name) throws IOException {
- File fromFile = new File(from_name);
- File toFile = new File(to_name);
- //确定源文件存在,可读
- if(!fromFile.exists()) {
- abort("no such source file: " + from_name);
- }
- if(!fromFile.canRead()) {
- abort("source file is unreadble: " + from_name);
- }
- //如果目标是目录,用源文件名命名目标
- if(toFile.isDirectory()) {
- toFile = new File(toFile, fromFile.getName());
- }
- if(toFile.exists()) {
- if(!toFile.canRead()) {
- abort("destination file is unreadble: " + to_name);
- }
- // 询问是否覆盖
- System.out.println("Overwrite existing file " + toFile.getName() +
- " ? (Y/N):");
- System.out.flush();
- //获得用户响应
- BufferedReader in = new BufferedReader
- (new InputStreamReader(System.in));
- String response = in.readLine();
- if(!response.equalsIgnoreCase("y")) {
- abort("existing file was not overwritten. ");
- }
- }
- else {
- String parent = toFile.getParent();
- if(parent == null) {//如果不存在,使用当前目录
- parent = System.getProperty("user.dir");
- }
- File dir = new File(parent);
- if(!dir.exists()) {
- abort("destination directory doesn't exist: "+ parent);
- }
- if(dir.isFile()) {
- abort("destination is not a directory: " + parent);
- }
- if(!dir.canRead()) {
- abort("destination dir is unwirteable: " + parent);
- }
- }
- //到此说明一切正常
- FileInputStream fromStream = null;
- FileOutputStream toStream = null;
- try{
- fromStream = new FileInputStream(fromFile);
- toStream = new FileOutputStream(toFile);
- byte[] buffer = new byte[4096];
- int bytes_read;
- while((bytes_read = fromStream.read(buffer)) != -1 ){
- toStream.write(buffer, 0, bytes_read);
- }
- }
- finally {
- if(fromStream != null) try{fromStream.close(); } catch(IOException ex) {}
- if(toStream != null) try {toStream.close();} catch(IOException ex) {}
- }
- }
- private static void abort(String msg) throws IOException{
- throw new IOException("FileCopy: " + msg);
- }
- }
/** * io 例子,文件copy 的一个类,加入了相关检验 */ package cn.lokvin.examples.io; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; /** * @author lokvin * */ public class FileCopy { /** * @param args */ public static void main(String[] args) { if(args.length != 2) System.err.println("Usage: java FileCopy <source> <destination>"); else { try { copy(args[0], args[1]); }catch(IOException ex) { System.err.println(ex.getMessage()); } } } /** * 文件复制的静态方法,复制前进行检查 * @param from_name * @param to_name */ public static void copy(String from_name, String to_name) throws IOException { File fromFile = new File(from_name); File toFile = new File(to_name); //确定源文件存在,可读 if(!fromFile.exists()) { abort("no such source file: " + from_name); } if(!fromFile.canRead()) { abort("source file is unreadble: " + from_name); } //如果目标是目录,用源文件名命名目标 if(toFile.isDirectory()) { toFile = new File(toFile, fromFile.getName()); } if(toFile.exists()) { if(!toFile.canRead()) { abort("destination file is unreadble: " + to_name); } // 询问是否覆盖 System.out.println("Overwrite existing file " + toFile.getName() + " ? (Y/N):"); System.out.flush(); //获得用户响应 BufferedReader in = new BufferedReader (new InputStreamReader(System.in)); String response = in.readLine(); if(!response.equalsIgnoreCase("y")) { abort("existing file was not overwritten. "); } } else { String parent = toFile.getParent(); if(parent == null) {//如果不存在,使用当前目录 parent = System.getProperty("user.dir"); } File dir = new File(parent); if(!dir.exists()) { abort("destination directory doesn't exist: "+ parent); } if(dir.isFile()) { abort("destination is not a directory: " + parent); } if(!dir.canRead()) { abort("destination dir is unwirteable: " + parent); } } //到此说明一切正常 FileInputStream fromStream = null; FileOutputStream toStream = null; try{ fromStream = new FileInputStream(fromFile); toStream = new FileOutputStream(toFile); byte[] buffer = new byte[4096]; int bytes_read; while((bytes_read = fromStream.read(buffer)) != -1 ){ toStream.write(buffer, 0, bytes_read); } } finally { if(fromStream != null) try{fromStream.close(); } catch(IOException ex) {} if(toStream != null) try {toStream.close();} catch(IOException ex) {} } } private static void abort(String msg) throws IOException{ throw new IOException("FileCopy: " + msg); } }
发表评论
-
maven 在Mac OS下运行的问题总结
2014-05-16 17:24 834在maven下生成基本的项目结构。 生成eclipse项 ... -
【zz】 java函数参数类型后添加三点的用法
2012-07-02 09:48 1052今天看到一个没见过的函数参数列表test(int... a), ... -
【zz】Java编码的理解和Java加载器的理解
2012-06-08 15:59 757一,我对java中编码的理解1. 编码的产生 对电脑而言 ... -
类加载器入门级应用
2012-06-08 15:17 9311、类加载器负责加载 Ja ... -
ClassLoader详解
2012-06-08 14:23 1253Point One 将J2EE应用程序移植到W ... -
Java静态代理与动态代理
2012-05-29 10:32 945JAVA的静态代理与动态代 ... -
JDK的动态代理深入解析(Proxy,InvocationHandler)(转)
2012-05-29 10:31 5195调用处理器InvocationHandle ... -
zz 动态反射实现AOP的简单原理
2012-05-28 17:46 904其实AOP的意思就是面向切面编程. OO注重的是我们 ... -
理解Java枚举在单例模式的应用
2012-06-05 15:50 12825.3.9 单例和枚举 按照《高效Java 第二版》中的说 ... -
Java 枚举的介绍
2012-05-23 16:50 0一、使用简单程序完成枚举的功能 例:使用简单类完成枚举操作 ... -
枚举类型的用法
2012-06-05 15:50 1436DK1.5引入了新的类型——枚举。在 Java 中它虽然算 ... -
单例模式的七种写法 (包括1.5新特性)
2012-05-23 16:18 0第一种(懒汉,线程不安全): <!--<br / ... -
重写hashCode方法的意义
2012-05-23 16:01 1652Java中的很多对象都override了equ ... -
JDK Log的设计思想
2012-05-23 14:39 1316最近在看《Agile Java》,看到日志一节,收获颇多,所以 ... -
[zz] Synchronized和Static Synchronized区别
2012-05-23 14:07 790通过分析这两个用法的分析,我们可以理解java中锁的概念。一 ... -
双精度、单精度的有效位数
2012-05-22 17:25 5118浮点数7位有效数字。(应该是单精度数) 双精度数16位有效 ... -
DecimalFormat 使用方法
2012-05-22 16:44 1031我们经常要将数字进行格式化,比如取2位小数,这是最常见的。Ja ... -
Java Applet 无法运行的一个问题
2012-04-28 15:09 2541当你用JDK1.6开发出的新功能,在JDK1.6上re ... -
JDK1.5之中的Map相关的类
2012-04-26 10:14 1872java5的java.util包提供了大量集合类。其中最常用的 ... -
设计模式应用场景总结
2012-04-11 16:47 1276在J2EE的开发和测试中,其实不知不觉已经使用了许多设计模式。 ...
相关推荐
java IO教程,java IO教程,java IO教程,java IO教程java IO教程java IO教程java IO教程java IO教程,java IO教程java IO教程java IO教程java IO教程java IO教程,java IO教程,java IO教程,java IO教程,java IO...
Java IO应届生培训讲义是一份面向刚毕业的大学生进行Java IO相关知识的培训资料,它涵盖了Java IO的基础知识、不同的IO模型以及Java中的BIO、NIO和AIO高级IO类库。下面详细解释这些知识点: 1. 用户空间和内核空间 ...
Java IO处理类是Java平台中用于输入输出操作的核心部分,它允许程序与各种类型的输入源(如文件、网络连接)以及输出目标(如显示器、打印机)进行交互。本篇文章将全面解析Java IO处理类,包括基本概念、常用类库、...
Java IO 相关基础知识主要涉及网络通信、协议、套接字以及不同的IO模型。首先,IP协议负责在网络中传输数据,它将数据分割成小块并通过IP包发送,但不保证数据的可靠传输或顺序。TCP(传输控制协议)则是一个面向...
《Java IO.chm》是一个关于Java输入/输出(IO)技术的压缩文件,其中包含了丰富的资料,适合开发者深入理解和学习Java IO系统。这篇详细的总结将围绕Java IO体系结构、核心类、流的概念、缓冲区、转换流、字符集、...
Java IO(Input/Output)是Java编程语言中用于处理输入输出操作的重要部分,涉及文件、网络、内存等数据传输。本文将深入探讨Java IO的基本概念、分类、选择流的策略以及常用的流类型。 首先,File类是Java IO的...
Java IO(Input/Output)是Java编程语言中用于处理输入和输出操作的重要组成部分。它提供了一整套类库,使得开发者能够有效地读取和写入数据到不同的源和目标,如文件、网络、内存缓冲区等。Java IO体系结构设计得...
Java IO(Input/Output)是Java编程语言中用于处理输入输出操作的基础框架,它提供了丰富的类库,使得程序能够与各种设备、文件、网络进行数据交互。然而,传统的IO模型在处理大量并发连接时表现出效率较低的问题,...
Java IO 详解 Java IO(Input/Output)是 Java 语言中用于处理输入输出操作的类库,提供了大量的类和方法来实现文件、网络、字节流等方面的输入输出操作。下面对 Java IO 中的重要知识点进行详细说明。 一、File ...
IO 简介,只看这篇,IO全部搞定,对于初学者来说,不可多得
在“JavaIODemo”这个示例中,可能会包含以上提到的一些或全部Java IO操作的代码实例,通过这些实例,我们可以学习如何在实际项目中应用Java IO API。实践是掌握Java IO的最佳方式,通过对这些示例的分析和运行,...
Java IO(Input/Output)是Java编程语言中用于处理输入和输出操作的重要组成部分。它提供了丰富的类库,允许程序员在程序之间传输数据,包括从文件、网络、内存缓冲区到其他程序或系统组件。Java IO API是Java平台的...
### Java IO操作详解 #### 一、Java IO基础概念 Java IO(Input/Output)是Java编程语言中处理输入输出的基础框架。它提供了多种类和接口来处理不同类型的输入输出需求,包括文件读写、网络通信等。Java IO体系...
Java IO编程是Java平台中处理输入输出操作的重要组成部分,它提供了丰富的类库,使得开发者能够高效地进行数据的读取、写入、流的管理和转换。在这个集合中,我们主要探讨的是Java IO在文件读写方面的实践应用。 一...
JavaIO流详解归纳 Java 的核心库 java.io 提供了全面的 IO 接口,包括文件读写、标准设备输出等。Java 中 IO 是以流为基础进行输入输出的,所有数据被串行化写入输出流,或者从输入流读入。在项目开发中,IO 是非常...
java io处理 方法java io处理 方法
Java io流的总结
在Java编程领域,IO(Input/Output)技术是不可或缺的一部分,尤其在处理数据持久化、文件操作、网络通信等方面发挥着重要作用。在这个“java小项目练习IO实现”中,我们将探讨如何利用Java的IO流来实现本地数据的...
java io 文件读写
Java IO 与 装饰模式 在Java编程中,输入输出(IO)处理是程序设计中的重要组成部分,用于读取、写入和处理数据。Java IO库提供了一整套类来支持各种类型的输入输出操作,包括文件、网络、内存等。而装饰模式是一种...