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

wordpress分享视频网站北京网站seo

wordpress分享视频网站,北京网站seo,互助网站建设公司,商务网站要怎么做Java 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/461388.html

相关文章:

  • 广西金利建设有限公司网站谷歌搜索引擎入口2021
  • 如何搭建一个自己上传视频的网站宁波seo外包服务
  • 哪里需要人做钓鱼网站网上怎么做广告
  • 建构网站西安廊坊网络推广优化公司
  • 深圳福田做网站中国十大外贸平台
  • 宁波网站建设推广怎么制作网站平台
  • 网站建设 域名 数据库如何分步骤开展seo工作
  • 惠阳网站开发百度软件中心
  • 宁夏免费做网站友情链接的英文
  • 泰州市建设局网站抖音优化是什么意思
  • 做一个商品网站多少钱博客优化网站seo怎么写
  • 北京附近做网站的公司seo推广的公司
  • 汕头如何建设网站设计seo怎样才能优化网站
  • 海尔电子商务网站建设情况今日热点新闻头条
  • 网站设计 网站建设百度指数数据分析平台
  • 网站建设 by祥云平台品牌推广和营销推广
  • 软件开发培训机构出来的人社保是怎么交的安卓优化大师下载安装到手机
  • wordpress 共用数据库百度seo排名优化助手
  • 建设工程施工合同最新版本广西网络优化seo
  • 做自媒体的有哪些素材网站站内搜索工具
  • 个旧网站建设制作网站的步骤是什么
  • ps做网站大小尺寸西安整站优化
  • 粘贴以下代码到网站首页代码的与标签之间网络舆情监测
  • 做的网站bug多排名app
  • 漂亮的flash网站女生学电子商务好吗
  • 怎么给网站做api今日头条军事新闻
  • wordpress 双语模板seo流量排名工具
  • 网站空间价格表网站关键词排名
  • 邢台做网站哪家便宜企业文化标语经典
  • 做课件挣钱的网站网站开发怎么做