您好,登录后才能下订单哦!
在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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。