当前位置: 首页 > wzjs >正文

wordpress分享视频网站营销型企业网站制作

wordpress分享视频网站,营销型企业网站制作,客服电话系统,wordpress内网ossJava I/O 流体系详解及各类使用示例 Java I/O(输入/输出)流体系是Java处理数据输入输出的核心API,提供了丰富的类库来支持各种数据源的读写操作。下面我将全面讲解Java I/O流体系,并为每个主要类提供具体的使用示例。 一、I/O流…

Java I/O 流体系详解及各类使用示例

Java I/O(输入/输出)流体系是Java处理数据输入输出的核心API,提供了丰富的类库来支持各种数据源的读写操作。下面我将全面讲解Java I/O流体系,并为每个主要类提供具体的使用示例。

一、I/O流体系总体架构

Java I/O流主要分为两大类:

  1. 字节流(Byte Streams):以字节(8位)为单位进行读写

    • 核心抽象类:InputStreamOutputStream
  2. 字符流(Character Streams):以字符(16位Unicode)为单位进行读写

    • 核心抽象类:ReaderWriter

二、字节流体系详解与示例

1. 输入流(InputStream)体系

(1) FileInputStream - 文件字节输入流
// 读取文件内容到字节数组
try (InputStream is = new FileInputStream("test.txt")) {byte[] buffer = new byte[1024];int bytesRead;while ((bytesRead = is.read(buffer)) != -1) {System.out.write(buffer, 0, bytesRead);}
} catch (IOException e) {e.printStackTrace();
}
(2) ByteArrayInputStream - 字节数组输入流
byte[] data = "Hello World".getBytes();
try (InputStream is = new ByteArrayInputStream(data)) {int content;while ((content = is.read()) != -1) {System.out.print((char) content);}
}
(3) BufferedInputStream - 缓冲字节输入流
// 使用缓冲提高读取效率
try (InputStream is = new BufferedInputStream(new FileInputStream("largefile.dat"))) {byte[] buffer = new byte[8192];int bytesRead;while ((bytesRead = is.read(buffer)) != -1) {// 处理数据}
}
(4) DataInputStream - 基本数据类型输入流
// 读取基本数据类型
try (DataInputStream dis = new DataInputStream(new FileInputStream("data.bin"))) {int i = dis.readInt();double d = dis.readDouble();boolean b = dis.readBoolean();System.out.println(i + ", " + d + ", " + b);
}
(5) ObjectInputStream - 对象反序列化流
// 反序列化对象
try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream("object.dat"))) {Person person = (Person) ois.readObject();System.out.println(person);
} catch (ClassNotFoundException e) {e.printStackTrace();
}

2. 输出流(OutputStream)体系

(1) FileOutputStream - 文件字节输出流
// 写入字节到文件
try (OutputStream os = new FileOutputStream("output.txt")) {byte[] data = "Hello Java IO".getBytes();os.write(data);
}
(2) ByteArrayOutputStream - 字节数组输出流
// 将数据写入内存中的字节数组
try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) {baos.write("Hello".getBytes());baos.write(" World".getBytes());byte[] result = baos.toByteArray();System.out.println(new String(result));
}
(3) BufferedOutputStream - 缓冲字节输出流
// 使用缓冲提高写入效率
try (OutputStream os = new BufferedOutputStream(new FileOutputStream("largefile.dat"))) {for (int i = 0; i < 100000; i++) {os.write(i);}
}
(4) DataOutputStream - 基本数据类型输出流
// 写入基本数据类型
try (DataOutputStream dos = new DataOutputStream(new FileOutputStream("data.bin"))) {dos.writeInt(123);dos.writeDouble(3.14);dos.writeBoolean(true);
}
(5) ObjectOutputStream - 对象序列化流
// 序列化对象
Person person = new Person("张三", 25);
try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("person.dat"))) {oos.writeObject(person);
}
(6) PrintStream - 格式化输出流
// 格式化输出
try (PrintStream ps = new PrintStream("print.txt")) {ps.println("Hello PrintStream");ps.printf("PI = %.2f", Math.PI);
}

三、字符流体系详解与示例

1. 读取流(Reader)体系

(1) InputStreamReader - 字节流转字符流
// 将字节流转换为字符流
try (Reader reader = new InputStreamReader(new FileInputStream("text.txt"), "UTF-8")) {int data;while ((data = reader.read()) != -1) {System.out.print((char) data);}
}
(2) FileReader - 文件字符输入流
// 读取文本文件
try (Reader reader = new FileReader("text.txt")) {char[] buffer = new char[1024];int charsRead;while ((charsRead = reader.read(buffer)) != -1) {System.out.print(new String(buffer, 0, charsRead));}
}
(3) BufferedReader - 缓冲字符输入流
// 逐行读取文本文件
try (BufferedReader br = new BufferedReader(new FileReader("text.txt"))) {String line;while ((line = br.readLine()) != null) {System.out.println(line);}
}
(4) StringReader - 字符串读取流
// 从字符串读取
String data = "Hello StringReader";
try (Reader reader = new StringReader(data)) {int ch;while ((ch = reader.read()) != -1) {System.out.print((char) ch);}
}

2. 写入流(Writer)体系

(1) OutputStreamWriter - 字符流转字节流
// 将字符流写入字节流
try (Writer writer = new OutputStreamWriter(new FileOutputStream("output.txt"), "UTF-8")) {writer.write("Hello OutputStreamWriter");
}
(2) FileWriter - 文件字符输出流
// 写入文本文件
try (Writer writer = new FileWriter("output.txt")) {writer.write("Hello FileWriter");
}
(3) BufferedWriter - 缓冲字符输出流
// 高效写入文本文件
try (BufferedWriter bw = new BufferedWriter(new FileWriter("output.txt"))) {bw.write("Line 1");bw.newLine();bw.write("Line 2");
}
(4) StringWriter - 字符串写入流
// 将数据写入字符串
try (StringWriter sw = new StringWriter()) {sw.write("Hello ");sw.write("StringWriter");String result = sw.toString();System.out.println(result);
}
(5) PrintWriter - 格式化字符输出流
// 格式化输出到文件
try (PrintWriter pw = new PrintWriter("print.txt")) {pw.println("Hello PrintWriter");pw.printf("Today is %tF", new Date());
}

四、NIO (New I/O) 示例

1. 文件复制(NIO)

Path source = Paths.get("source.txt");
Path target = Paths.get("target.txt");
try {Files.copy(source, target, StandardCopyOption.REPLACE_EXISTING);
} catch (IOException e) {e.printStackTrace();
}

2. 使用Channel和Buffer读取文件

try (FileChannel channel = FileChannel.open(Paths.get("data.txt"))) {ByteBuffer buffer = ByteBuffer.allocate(1024);while (channel.read(buffer) > 0) {buffer.flip();while (buffer.hasRemaining()) {System.out.print((char) buffer.get());}buffer.clear();}
}

五、Java 7 NIO.2 增强示例

1. 遍历目录

Path dir = Paths.get(".");
try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir)) {for (Path entry : stream) {System.out.println(entry.getFileName());}
}

2. 异步文件读取

AsynchronousFileChannel channel = AsynchronousFileChannel.open(Paths.get("largefile.txt"));
ByteBuffer buffer = ByteBuffer.allocate(1024);
channel.read(buffer, 0, buffer, new CompletionHandler<Integer, ByteBuffer>() {@Overridepublic void completed(Integer result, ByteBuffer attachment) {System.out.println("Read completed: " + result + " bytes");}@Overridepublic void failed(Throwable exc, ByteBuffer attachment) {exc.printStackTrace();}});

六、总结

Java I/O流体系提供了丰富的API来处理各种输入输出需求:

  1. 字节流:处理二进制数据,核心类是InputStreamOutputStream
  2. 字符流:处理文本数据,核心类是ReaderWriter
  3. 装饰器模式:通过组合方式扩展功能(如缓冲、数据类型支持等)
  4. NIO:提供非阻塞I/O、内存映射文件等高效操作
  5. NIO.2:进一步简化文件操作,增加异步I/O支持

在实际开发中,应根据具体需求选择合适的I/O类和方法。对于文本处理优先使用字符流,二进制数据处理使用字节流,大文件或高性能需求考虑NIO。同时,使用try-with-resources语句确保资源正确释放。

http://www.dtcms.com/wzjs/474034.html

相关文章:

  • 网站改版 数据迁移关键词排名代做
  • 网站服务器怎么做安全防护个人如何做网络推广
  • 为什么选择做游戏网站商务软文写作
  • 小程序论坛安卓优化大师2023
  • 新闻网站建设毕业设计北京云无限优化
  • 网页排版设计软件seo网站外链平台
  • 烟台网站建设公司地址网络营销主要是什么
  • 武汉网站建设认可搜点网络百度关键词多少钱一个月
  • 湖南旅游网站开发seo合作代理
  • 网站建设微信软文百度的关键词优化
  • wordpress 软件主题优化设计三年级上册答案语文
  • 网站建设需要什么技能最新足球新闻头条
  • q a wordpress插件下载地址排名优化网站
  • 北京做网站好的公司网络整合营销推广
  • 做视频分享网站国家市场监督管理总局官网
  • 有专门做面包的网站么推广价格一般多少
  • 网站建设项目验收报告产品推广文案
  • asp网站制作教程世界营销大师排名
  • 做网站优化有前景吗南宁seo优化
  • 那些网站反爬做的好站长工具权重查询
  • 制作简历的免费网站电商平台
  • soho做网站谷歌推广网络营销有哪些推广方法
  • 甪直做网站小网站广告投放
  • 网站建设要哪些工作单页网站怎么优化
  • 简述电子商务网站开发的基本原则app推广营销
  • 手机做网站空间seo网站内容优化有哪些
  • 内网站做映射百度热榜实时热点
  • 广州市专业做网站最近的新闻摘抄
  • 大悟网站建设网络优化需要哪些知识
  • 建设工程教育网网址北京搜索优化推广公司