您好,登录后才能下订单哦!
在Java编程中,IO流(输入输出流)是处理数据输入输出的重要工具。无论是读取文件、网络数据传输,还是与用户交互,IO流都扮演着至关重要的角色。Java提供了丰富的IO流类库,涵盖了字节流、字符流、缓冲流、转换流等多种类型。本文将详细介绍Java SE中常用的IO流及其方法,帮助开发者更好地理解和应用这些工具。
IO流是Java中用于处理输入输出的抽象概念。根据数据的传输方向,IO流可以分为输入流(InputStream/Reader)和输出流(OutputStream/Writer)。根据数据的处理方式,IO流又可以分为字节流和字符流。
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是所有字节输出流的基类,提供了写入字节数据的基本方法。
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是所有字符输入流的基类,提供了读取字符数据的基本方法。
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是所有字符输出流的基类,提供了写入字符数据的基本方法。
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类用于表示文件和目录路径名的抽象表示,提供了文件和目录的操作方法。
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类允许随机访问文件内容,既可以读取也可以写入。
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为InputStream提供了缓冲功能,可以提高读取效率。
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为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():关闭输出流,释放相关资源。BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("example.txt"));
byte[] data = "Hello, World!".getBytes();
bos.write(data);
bos.close();
BufferedReader为Reader提供了缓冲功能,可以提高读取效率。
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为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 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是字节流到字符流的桥梁,可以将字节流转换为字符流。
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是字符流到字节流的桥梁,可以将字符流转换为字节流。
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允许应用程序以与机器无关的方式从底层输入流中读取基本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允许应用程序以与机器无关的方式向底层输出流中写入基本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用于从输入流中读取对象。
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用于将对象写入输出流。
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为其他输出流添加了功能,使它们能够方便地打印各种数据值表示形式。
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()免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。