温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

JavaSE IO流常用方法有哪些

发布时间:2022-10-17 16:13:40 来源:亿速云 阅读:172 作者:iii 栏目:编程语言

JavaSE IO流常用方法有哪些

目录

  1. 引言
  2. IO流概述
  3. 字节流
  4. 字符流
  5. 文件操作
  6. 缓冲流
  7. 转换流
  8. 数据流
  9. 对象流
  10. 打印流
  11. 序列流
  12. 管道流
  13. 标准输入输出流
  14. 总结

引言

在Java编程中,IO流(输入输出流)是处理数据输入输出的重要工具。无论是读取文件、网络数据传输,还是与用户交互,IO流都扮演着至关重要的角色。Java提供了丰富的IO流类库,涵盖了字节流、字符流、缓冲流、转换流等多种类型。本文将详细介绍Java SE中常用的IO流及其方法,帮助开发者更好地理解和应用这些工具。

IO流概述

IO流是Java中用于处理输入输出的抽象概念。根据数据的传输方向,IO流可以分为输入流(InputStream/Reader)和输出流(OutputStream/Writer)。根据数据的处理方式,IO流又可以分为字节流和字符流。

  • 字节流:以字节为单位进行数据传输,适用于处理二进制数据,如图片、音频、视频等。
  • 字符流:以字符为单位进行数据传输,适用于处理文本数据。

字节流

InputStream

InputStream是所有字节输入流的基类,提供了读取字节数据的基本方法。

常用方法

  • int read():读取一个字节的数据,返回读取的字节值(0-255),如果到达流的末尾则返回-1。
  • int read(byte[] b):将数据读入字节数组b,返回实际读取的字节数。
  • int read(byte[] b, int off, int len):将数据读入字节数组b的指定位置,从off开始,最多读取len个字节。
  • long skip(long n):跳过n个字节的数据,返回实际跳过的字节数。
  • int available():返回当前可读取的字节数。
  • void close():关闭输入流,释放相关资源。

示例代码

InputStream inputStream = new FileInputStream("example.txt");
int data;
while ((data = inputStream.read()) != -1) {
    System.out.print((char) data);
}
inputStream.close();

OutputStream

OutputStream是所有字节输出流的基类,提供了写入字节数据的基本方法。

常用方法

  • void write(int b):写入一个字节的数据。
  • void write(byte[] b):写入字节数组b中的所有数据。
  • void write(byte[] b, int off, int len):写入字节数组b中从off开始的len个字节。
  • void flush():刷新输出流,强制将缓冲区中的数据写入目标。
  • void close():关闭输出流,释放相关资源。

示例代码

OutputStream outputStream = new FileOutputStream("example.txt");
byte[] data = "Hello, World!".getBytes();
outputStream.write(data);
outputStream.close();

字符流

Reader

Reader是所有字符输入流的基类,提供了读取字符数据的基本方法。

常用方法

  • int read():读取一个字符的数据,返回读取的字符值(0-65535),如果到达流的末尾则返回-1。
  • int read(char[] cbuf):将数据读入字符数组cbuf,返回实际读取的字符数。
  • int read(char[] cbuf, int off, int len):将数据读入字符数组cbuf的指定位置,从off开始,最多读取len个字符。
  • long skip(long n):跳过n个字符的数据,返回实际跳过的字符数。
  • boolean ready():判断流是否准备好被读取。
  • void close():关闭输入流,释放相关资源。

示例代码

Reader reader = new FileReader("example.txt");
int data;
while ((data = reader.read()) != -1) {
    System.out.print((char) data);
}
reader.close();

Writer

Writer是所有字符输出流的基类,提供了写入字符数据的基本方法。

常用方法

  • void write(int c):写入一个字符的数据。
  • void write(char[] cbuf):写入字符数组cbuf中的所有数据。
  • void write(char[] cbuf, int off, int len):写入字符数组cbuf中从off开始的len个字符。
  • void write(String str):写入字符串str
  • void write(String str, int off, int len):写入字符串str中从off开始的len个字符。
  • void flush():刷新输出流,强制将缓冲区中的数据写入目标。
  • void close():关闭输出流,释放相关资源。

示例代码

Writer writer = new FileWriter("example.txt");
writer.write("Hello, World!");
writer.close();

文件操作

File类

File类用于表示文件和目录路径名的抽象表示,提供了文件和目录的操作方法。

常用方法

  • boolean exists():判断文件或目录是否存在。
  • boolean isFile():判断是否是一个文件。
  • boolean isDirectory():判断是否是一个目录。
  • String getName():获取文件或目录的名称。
  • String getPath():获取文件或目录的路径。
  • long length():获取文件的长度(字节数)。
  • boolean createNewFile():创建一个新的空文件。
  • boolean delete():删除文件或目录。
  • boolean mkdir():创建一个目录。
  • boolean mkdirs():创建一个目录,包括所有必需的父目录。
  • String[] list():获取目录中的文件和子目录的名称数组。
  • File[] listFiles():获取目录中的文件和子目录的File对象数组。

示例代码

File file = new File("example.txt");
if (file.exists()) {
    System.out.println("File exists: " + file.getName());
} else {
    System.out.println("File does not exist.");
}

RandomAccessFile

RandomAccessFile类允许随机访问文件内容,既可以读取也可以写入。

常用方法

  • long getFilePointer():获取当前文件指针的位置。
  • void seek(long pos):设置文件指针的位置。
  • int read():读取一个字节的数据。
  • int read(byte[] b):将数据读入字节数组b
  • int read(byte[] b, int off, int len):将数据读入字节数组b的指定位置。
  • void write(int b):写入一个字节的数据。
  • void write(byte[] b):写入字节数组b中的所有数据。
  • void write(byte[] b, int off, int len):写入字节数组b中从off开始的len个字节。
  • void close():关闭文件,释放相关资源。

示例代码

RandomAccessFile raf = new RandomAccessFile("example.txt", "rw");
raf.seek(raf.length());
raf.write("Hello, World!".getBytes());
raf.close();

缓冲流

BufferedInputStream

BufferedInputStreamInputStream提供了缓冲功能,可以提高读取效率。

常用方法

  • int read():读取一个字节的数据。
  • int read(byte[] b):将数据读入字节数组b
  • int read(byte[] b, int off, int len):将数据读入字节数组b的指定位置。
  • long skip(long n):跳过n个字节的数据。
  • int available():返回当前可读取的字节数。
  • void close():关闭输入流,释放相关资源。

示例代码

BufferedInputStream bis = new BufferedInputStream(new FileInputStream("example.txt"));
int data;
while ((data = bis.read()) != -1) {
    System.out.print((char) data);
}
bis.close();

BufferedOutputStream

BufferedOutputStreamOutputStream提供了缓冲功能,可以提高写入效率。

常用方法

  • void write(int b):写入一个字节的数据。
  • void write(byte[] b):写入字节数组b中的所有数据。
  • void write(byte[] b, int off, int len):写入字节数组b中从off开始的len个字节。
  • void flush():刷新输出流,强制将缓冲区中的数据写入目标。
  • void close():关闭输出流,释放相关资源。

示例代码

BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("example.txt"));
byte[] data = "Hello, World!".getBytes();
bos.write(data);
bos.close();

BufferedReader

BufferedReaderReader提供了缓冲功能,可以提高读取效率。

常用方法

  • int read():读取一个字符的数据。
  • int read(char[] cbuf):将数据读入字符数组cbuf
  • int read(char[] cbuf, int off, int len):将数据读入字符数组cbuf的指定位置。
  • String readLine():读取一行文本。
  • long skip(long n):跳过n个字符的数据。
  • boolean ready():判断流是否准备好被读取。
  • void close():关闭输入流,释放相关资源。

示例代码

BufferedReader br = new BufferedReader(new FileReader("example.txt"));
String line;
while ((line = br.readLine()) != null) {
    System.out.println(line);
}
br.close();

BufferedWriter

BufferedWriterWriter提供了缓冲功能,可以提高写入效率。

常用方法

  • void write(int c):写入一个字符的数据。
  • void write(char[] cbuf):写入字符数组cbuf中的所有数据。
  • void write(char[] cbuf, int off, int len):写入字符数组cbuf中从off开始的len个字符。
  • void write(String str):写入字符串str
  • void write(String str, int off, int len):写入字符串str中从off开始的len个字符。
  • void newLine():写入一个行分隔符。
  • void flush():刷新输出流,强制将缓冲区中的数据写入目标。
  • void close():关闭输出流,释放相关资源。

示例代码

BufferedWriter bw = new BufferedWriter(new FileWriter("example.txt"));
bw.write("Hello, World!");
bw.newLine();
bw.write("This is a new line.");
bw.close();

转换流

InputStreamReader

InputStreamReader是字节流到字符流的桥梁,可以将字节流转换为字符流。

常用方法

  • int read():读取一个字符的数据。
  • int read(char[] cbuf):将数据读入字符数组cbuf
  • int read(char[] cbuf, int off, int len):将数据读入字符数组cbuf的指定位置。
  • boolean ready():判断流是否准备好被读取。
  • void close():关闭输入流,释放相关资源。

示例代码

InputStreamReader isr = new InputStreamReader(new FileInputStream("example.txt"));
int data;
while ((data = isr.read()) != -1) {
    System.out.print((char) data);
}
isr.close();

OutputStreamWriter

OutputStreamWriter是字符流到字节流的桥梁,可以将字符流转换为字节流。

常用方法

  • void write(int c):写入一个字符的数据。
  • void write(char[] cbuf):写入字符数组cbuf中的所有数据。
  • void write(char[] cbuf, int off, int len):写入字符数组cbuf中从off开始的len个字符。
  • void write(String str):写入字符串str
  • void write(String str, int off, int len):写入字符串str中从off开始的len个字符。
  • void flush():刷新输出流,强制将缓冲区中的数据写入目标。
  • void close():关闭输出流,释放相关资源。

示例代码

OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("example.txt"));
osw.write("Hello, World!");
osw.close();

数据流

DataInputStream

DataInputStream允许应用程序以与机器无关的方式从底层输入流中读取基本Java数据类型。

常用方法

  • int read(byte[] b):将数据读入字节数组b
  • int read(byte[] b, int off, int len):将数据读入字节数组b的指定位置。
  • boolean readBoolean():读取一个boolean值。
  • byte readByte():读取一个byte值。
  • char readChar():读取一个char值。
  • double readDouble():读取一个double值。
  • float readFloat():读取一个float值。
  • int readInt():读取一个int值。
  • long readLong():读取一个long值。
  • short readShort():读取一个short值。
  • String readUTF():读取一个UTF-8编码的字符串。
  • void close():关闭输入流,释放相关资源。

示例代码

DataInputStream dis = new DataInputStream(new FileInputStream("example.dat"));
int intValue = dis.readInt();
double doubleValue = dis.readDouble();
String stringValue = dis.readUTF();
dis.close();

DataOutputStream

DataOutputStream允许应用程序以与机器无关的方式向底层输出流中写入基本Java数据类型。

常用方法

  • void write(byte[] b):写入字节数组b中的所有数据。
  • void write(byte[] b, int off, int len):写入字节数组b中从off开始的len个字节。
  • void writeBoolean(boolean v):写入一个boolean值。
  • void writeByte(int v):写入一个byte值。
  • void writeChar(int v):写入一个char值。
  • void writeDouble(double v):写入一个double值。
  • void writeFloat(float v):写入一个float值。
  • void writeInt(int v):写入一个int值。
  • void writeLong(long v):写入一个long值。
  • void writeShort(int v):写入一个short值。
  • void writeUTF(String str):写入一个UTF-8编码的字符串。
  • void flush():刷新输出流,强制将缓冲区中的数据写入目标。
  • void close():关闭输出流,释放相关资源。

示例代码

DataOutputStream dos = new DataOutputStream(new FileOutputStream("example.dat"));
dos.writeInt(123);
dos.writeDouble(123.456);
dos.writeUTF("Hello, World!");
dos.close();

对象流

ObjectInputStream

ObjectInputStream用于从输入流中读取对象。

常用方法

  • Object readObject():读取一个对象。
  • int read():读取一个字节的数据。
  • int read(byte[] b):将数据读入字节数组b
  • int read(byte[] b, int off, int len):将数据读入字节数组b的指定位置。
  • void close():关闭输入流,释放相关资源。

示例代码

ObjectInputStream ois = new ObjectInputStream(new FileInputStream("example.dat"));
Object obj = ois.readObject();
ois.close();

ObjectOutputStream

ObjectOutputStream用于将对象写入输出流。

常用方法

  • void writeObject(Object obj):写入一个对象。
  • void write(int b):写入一个字节的数据。
  • void write(byte[] b):写入字节数组b中的所有数据。
  • void write(byte[] b, int off, int len):写入字节数组b中从off开始的len个字节。
  • void flush():刷新输出流,强制将缓冲区中的数据写入目标。
  • void close():关闭输出流,释放相关资源。

示例代码

ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("example.dat"));
oos.writeObject(new MyClass());
oos.close();

打印流

PrintStream

PrintStream为其他输出流添加了功能,使它们能够方便地打印各种数据值表示形式。

常用方法

  • void print(boolean b):打印一个boolean值。
  • void print(char c):打印一个char值。
  • void print(int i):打印一个int值。
  • void print(long l):打印一个long值。
  • void print(float f):打印一个float值。
  • void print(double d):打印一个double值。
  • void print(char[] s):打印一个字符数组。
  • void print(String s):打印一个字符串。
  • void print(Object obj):打印一个对象。
  • void println()
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI