IO流
java中的输入输出抽象为叫做流的概念
流的继承体系:
在java中,为了对不同来源和性质的流对象调用统一的方法,java中的流首先定义了顶层出入、输出的借口或抽象类,这样不同性质具体的流对象就会有一个统一的调用方法以便使用。
流的分类:
基础字节流(原始流)InputStream输入流和OutputStream输出流。基础流是直接连结到输入源中的流。
InputStream输入流和OutputStream输出流是抽象类,不能直接实例化对象,要通过其子类如:
//创建从源文件来的输入流
InputStream ins=new java.io.FileInputStream(srcName);
//创建输出流
OutputStream out=new FileOutputStream(bakName);
过滤流(节点流)用来包装基础流以提供更好的特性,如BufferedInputStream和BufferedOutputStream具有缓冲功能的类;
//创建输入缓冲流缓冲流以一个FileInputStream对象为参数
BufferedInputStream bis=new BufferedInputStream(ins);
//创建缓冲输出流对象
BufferedOutputStream bos=new BufferedOutputStream(out);
缓冲流操作完后要关闭流,否则会出现问题。
缓冲流的优点是提高了文件读取写入的速度
基与具体数据类型的流:从流中读取指定数据类型的数据。接口DateInput和DateOutput,子类DateInputStream和DateOutputStream
Date流创建对象时也要以FileOutputStream类对象为参数
基与对象读写:对象的输入输出流.接口ObjectInput和ObjectOutput,子类ObjectInputStream和ObjectOutputStream
Object流创建对象时也要以FileOutputStream类对象为参数
IO流的主要作用:
IO流主要针对文件内容操作。例如:对文件内容的修改,添加,删除,读取文件内容,写入文件内容
常用方法:
InputStream:
int available(); 流中可读取的有效字节的长度(以byte计)
void close();关闭流
int read(); 从输入流中读取数据的下一个字节
read(byte[] b) 从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b 中。
OutputStream
void close();关闭流
void flush();刷新此输出流并强制写出所有缓冲的输出字节。
void write(byte[] b) 将数组b写入到目标文件中
void write(byte[] b, int off, int len) 将指定数组中从偏移量 off 开始的 len 个字节写入此输出流。即写入数组的一部分
void write(int b) 将指定的字节写入此输出流
代码
public class FileIODemo {
/**
* 主函数
*/
public static void main(String[] args) {
FileIODemo fio = new FileIODemo();
// 定义一个读取文件的路径
String path = "src/cn/netjava/lesson15/FileIODemo.java";
// 定义一个写入文件的路径
String newPath = "src/cn/netjava/lesson15/FileIODemo.java.bak";
// 调用读取文件的方法
if(fio.readFile(path)){
System.out.println("读取文件成功!");
}else {
System.out.println("读取文件失败!");
}
}
/**
* 读取文件的方法
*
* @param path表示要读取文件的路径
* @return 返回文件是否读取成功
*/
public boolean readFile(String path) {
// 定义一个布尔变量,用来表示文件是否读取成功
boolean state = false;
try {
// 实例化一个输入流的对象
InputStream is = new FileInputStream(path);
// 获取文件的长度
int length = is.available();
// 根据文件字节的长度,来定义一个byte数组
byte array[] = new byte[length];
// 调用一次读满array数组的方法
// is.read(array);
// 循环读取文件
for (int i = 0; i < length; i++) {
// 读取文件
array[i] = (byte) is.read();
}
// 将byte转换为字符串
String str = new String(array);
// 输出
System.out.println("文件内容是:\n" + str);
is.close();
state = true;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return state;
}
}
public class BufferedIODemo {
/**
* 主函数
*/
public static void main(String[] args) {
BufferedIODemo bio = new BufferedIODemo();
// 定义一个读取文件的路径
String path = "src/cn/netjava/lesson15/BufferedIODemo.java";
// 定义一个写入文件的路径
String newPath = "src/cn/netjava/lesson15/BufferedIODemo.java.bak";
// 调用拷贝文件的方法
bio.copyFile(path, newPath);
}
/**
* 拷贝文件的方法
*
* @param path表示要读取文件的路径
* @param newPath表示要写入文件的路径
* @return 返回文件是否拷贝成功
*/
public void copyFile(String path, String newPath) {
try {
// 实例化一个输入流的对象
InputStream is = new FileInputStream(path);
// 实例化一个缓冲输入流对象
BufferedInputStream bis = new BufferedInputStream(is);
// 实例化一个输出流的对象
OutputStream os = new FileOutputStream(newPath);
// 实例化一个缓冲输出流对象
BufferedOutputStream bos = new BufferedOutputStream(os);
int i = 0;
// 循环读取文件内容,只要读取的值不是-1就表示还未到文件的末尾
while ((i = bis.read()) != -1) {
// 将i写入到文件中
bos.write(i);
}
bos.flush();//强制将缓冲中的内容写入到文件中
bos.close();
os.close();
bis.close();
is.close();
System.out.println("拷贝成功!");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
分享到:
相关推荐
在IT领域,IO流(Input/Output Stream)和XML解析是两个重要的概念,它们在数据处理和信息交换中起着核心作用。 IO流是Java编程语言中的一个关键特性,用于处理程序与外部设备(如硬盘、网络、内存等)之间的数据...
### JAVA IO流概念及其应用详解 #### 一、JAVA为何引入流的概念? 在JAVA中,引入流的概念主要是为了实现对各种类型数据的高效处理。在实际应用中,无论是从网络中传输数据还是从本地文件中读取数据,亦或是与用户...
Java的IO流是Java编程语言中的重要组成部分,它主要用于数据的输入和输出操作。在Java中,IO流被设计为处理任何类型的数据,包括字符、字节甚至对象。本练习旨在帮助初学者理解和掌握Java IO流的基础知识。 一、IO...
Java中的IO流是Java核心库的重要组成部分,它用于在不同数据源之间传输数据。Java IO流分为两大类:字符流(Character Stream)和字节流(Byte Stream)。字符流处理单个字符,而字节流处理8位的字节序列。它们又...
本文将深入探讨`Map`集合的特性和遍历方式,以及`Set`特性的排序,并介绍如何使用`IO流`,特别是字节流和字符流。 首先,我们来了解`Map`集合的基本概念。`Map`接口是Java集合框架的一部分,它不直接继承自`...
2、常用21个IO流:FileWriter、FileReader、CharArrayReader、CharArrayWriter、CharSequence、OutputStreamWriter、FileOutputStream、InputStreamReader、PrintWriter、BufferedReader、InputStream、...
### Java IO流基础知识点 #### 一、IO流概述 - **定义**:在Java中,IO流(Input/Output Streams)是用来处理输入输出的基本工具。流是一种有序的数据集合,通常涉及从源到目的地的数据传输过程。源可以是文件、...
Java IO流是Java编程语言中用于处理输入输出操作的一个重要概念。它允许程序读取数据源或向数据目的地写入数据。Java中的IO流主要分为输入流和输出流两大类,每类又可以根据数据处理方式的不同细分为多种具体实现。...
Java 中文件 IO 流 Java 中文件 IO 流是指 Java 语言中对文件的输入输出操作,通过定义文件流来实现文件的读写操作。文件流是指在程序中用于文件输入输出的对象, Java 中提供了多种文件流类型,包括 InputStream ...
在Java编程语言中,IO流(Input/Output流)是用来处理数据输入与输出的重要工具。在文本文件的复制过程中,通常会用到三种主要的流类型:字节流(Byte Stream)、字符流(Character Stream)以及缓冲流(Buffered ...
Java IO流是Java平台核心特性之一,用于处理输入和输出数据。这个概念是Java编程中的基石,对于任何涉及数据传输或文件操作的应用程序都至关重要。《IO流宝典》这本书全面深入地探讨了这一主题,旨在帮助读者从基础...
Java中的IO流主要负责在不同数据源之间进行数据的传输,包括从文件系统、网络、内存等地方读取数据,以及向这些地方写入数据。IO流被设计为双工通道,既可以进行输入操作,也可以进行输出操作。Java的IO流体系结构...
Java学生管理系统GUI+IO流是一个适合初学者的项目,它主要展示了如何在没有数据库支持的情况下,利用Java的图形用户界面(GUI)和输入输出(IO)流来实现一个简易的学生和教师信息管理功能。这个系统可能包括账户...
Java中的IO流是Java语言处理输入输出操作的重要组成部分,它为数据传输提供了强大的支持。本文将深入探讨Java的IO流实例应用,旨在帮助开发者更好地理解和掌握这一关键概念。 IO流在Java中分为两大类:字符流...
Java中的IO流是Java核心库java.io中的关键组成部分,它为程序提供了与外部资源交互的能力,包括文件读写、标准设备输入输出等。Java的IO流机制基于流的概念,流可以被视为数据传输的通道,数据按照序列化的方式从...
Java图书管理系统(IO流版)知识点总结 本文总结了Java图书管理系统(IO流版)的主要知识点,涵盖了Java基础语法、流程控制、面向对象思想、封装、继承、多态、接口、异常、集合、IO流等多方面的知识。 一、Java...
Java IO流技术是Java平台中用于处理输入输出的重要机制,其核心在于数据的传输,从数据源到程序或从程序到目的地。在Java中,流分为两大类:输入流(InputStream、Reader)和输出流(OutputStream、Writer)。输入流...
本人是初学者,在老师的指导下,将自身对Java中IO流的理解做成以下思维导图
### Java IO流学习笔记 #### 一、IO流的四大抽象类 - **InputStream/OutputStream**:字节的输入输出流的抽象类。 - 数据单位:字节(8比特,范围0-255) - **Reader/Writer**:字符的输入输出流的抽象类。 - ...
"io流写入和读取"这个主题涵盖了如何使用IO流进行数据的存储和检索,通常涉及到文件操作、数据序列化以及与数据库的交互。在本篇文章中,我们将深入探讨这些关键知识点。 首先,IO流是Java中的一个基础概念,它允许...