温馨提示×

温馨提示×

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

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

Java I/O流如何使用

发布时间:2022-08-05 09:56:53 来源:亿速云 阅读:213 作者:iii 栏目:开发技术

Java I/O流如何使用

Java I/O流是Java编程中用于处理输入和输出的核心机制。通过I/O流,程序可以从外部源(如文件、网络连接、内存等)读取数据,或将数据写入外部目标。Java的I/O流分为字节流和字符流两大类,分别用于处理字节数据和字符数据。

1. 字节流

字节流主要用于处理二进制数据,如图片、音频、视频等。Java提供了InputStreamOutputStream两个抽象类来表示字节流。

1.1 InputStream

InputStream是所有字节输入流的基类。常用的子类有FileInputStreamByteArrayInputStream等。

import java.io.FileInputStream; import java.io.IOException; public class InputStreamExample { public static void main(String[] args) { try (FileInputStream fis = new FileInputStream("input.txt")) { int data; while ((data = fis.read()) != -1) { System.out.print((char) data); } } catch (IOException e) { e.printStackTrace(); } } } 

1.2 OutputStream

OutputStream是所有字节输出流的基类。常用的子类有FileOutputStreamByteArrayOutputStream等。

import java.io.FileOutputStream; import java.io.IOException; public class OutputStreamExample { public static void main(String[] args) { try (FileOutputStream fos = new FileOutputStream("output.txt")) { String text = "Hello, World!"; fos.write(text.getBytes()); } catch (IOException e) { e.printStackTrace(); } } } 

2. 字符流

字符流主要用于处理文本数据。Java提供了ReaderWriter两个抽象类来表示字符流。

2.1 Reader

Reader是所有字符输入流的基类。常用的子类有FileReaderBufferedReader等。

import java.io.FileReader; import java.io.IOException; public class ReaderExample { public static void main(String[] args) { try (FileReader fr = new FileReader("input.txt")) { int data; while ((data = fr.read()) != -1) { System.out.print((char) data); } } catch (IOException e) { e.printStackTrace(); } } } 

2.2 Writer

Writer是所有字符输出流的基类。常用的子类有FileWriterBufferedWriter等。

import java.io.FileWriter; import java.io.IOException; public class WriterExample { public static void main(String[] args) { try (FileWriter fw = new FileWriter("output.txt")) { String text = "Hello, World!"; fw.write(text); } catch (IOException e) { e.printStackTrace(); } } } 

3. 缓冲流

为了提高I/O操作的效率,Java提供了缓冲流。缓冲流通过在内存中缓存数据,减少了对底层I/O设备的直接访问次数。

3.1 BufferedInputStreamBufferedOutputStream

import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class BufferedStreamExample { public static void main(String[] args) { try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream("input.txt")); BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("output.txt"))) { int data; while ((data = bis.read()) != -1) { bos.write(data); } } catch (IOException e) { e.printStackTrace(); } } } 

3.2 BufferedReaderBufferedWriter

import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class BufferedRWExample { public static void main(String[] args) { try (BufferedReader br = new BufferedReader(new FileReader("input.txt")); BufferedWriter bw = new BufferedWriter(new FileWriter("output.txt"))) { String line; while ((line = br.readLine()) != null) { bw.write(line); bw.newLine(); } } catch (IOException e) { e.printStackTrace(); } } } 

4. 对象流

对象流用于序列化和反序列化对象。Java提供了ObjectInputStreamObjectOutputStream两个类来处理对象流。

4.1 ObjectOutputStream

import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectOutputStream; public class ObjectOutputStreamExample { public static void main(String[] args) { try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("object.dat"))) { MyClass obj = new MyClass("John", 30); oos.writeObject(obj); } catch (IOException e) { e.printStackTrace(); } } } class MyClass implements java.io.Serializable { private String name; private int age; public MyClass(String name, int age) { this.name = name; this.age = age; } @Override public String toString() { return "MyClass{" + "name='" + name + '\'' + ", age=" + age + '}'; } } 

4.2 ObjectInputStream

import java.io.FileInputStream; import java.io.IOException; import java.io.ObjectInputStream; public class ObjectInputStreamExample { public static void main(String[] args) { try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream("object.dat"))) { MyClass obj = (MyClass) ois.readObject(); System.out.println(obj); } catch (IOException | ClassNotFoundException e) { e.printStackTrace(); } } } 

5. 总结

Java的I/O流提供了丰富的类和方法来处理各种类型的输入和输出操作。通过字节流和字符流,可以处理二进制数据和文本数据。缓冲流可以提高I/O操作的效率,而对象流则用于序列化和反序列化对象。掌握这些I/O流的使用方法,可以帮助开发者更高效地处理数据输入输出任务。

向AI问一下细节

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

AI