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

济南营销型网站制作泉州seo报价

济南营销型网站制作,泉州seo报价,电商设计有前途吗,食品商标出售网Java 中的 IO 和 NIO Java IO 介绍Java NIO(New IO)介绍windows 安装 ffmpeg完整示例参考文献 Java IO 介绍 Java IO(Input/Output)流是用于处理输入和输出数据的机制。它提供了一种标准化的方式来读取和写入数据,可以…

Java 中的 IO 和 NIO

  • Java IO 介绍
  • Java NIO(New IO)介绍
  • windows 安装 ffmpeg
  • 完整示例
  • 参考文献

Java IO 介绍

Java IO(Input/Output)流是用于处理输入和输出数据的机制。它提供了一种标准化的方式来读取和写入数据,可以与文件、网络、标准输入输出等进行交互。

Java IO流主要分为两个流模型:字节流(Byte Stream)和字符流(Character Stream)。

字节流(Byte Stream)

  • InputStream:字节输入流的抽象基类,用于从源中读取字节数据。
  • OutputStream:字节输出流的抽象基类,用于向目标中写入字节数据。

常见的字节流实现类包括:

  • FileInputStream:从文件中读取字节数据。
  • FileOutputStream:将字节数据写入文件。
  • BufferedInputStream/BufferedOutputStream:带有缓冲区的字节流,提高读写效率。

字符流(Character Stream)

  • Reader:字符输入流的抽象基类,用于从源中读取字符数据。
  • Writer:字符输出流的抽象基类,用于向目标中写入字符数据。

常见的字符流实现类包括:

  • FileReader:从文件中读取字符数据。
  • FileWriter:向文件中写入字符数据。
  • BufferedReader/BufferedWriter:带有缓冲区的字符流,提高读写效率。

使用Java IO流的一般步骤如下:

  • 打开流:通过实例化相应的流对象,与输入或输出源建立连接。
  • 读取或写入数据:通过流对象提供的方法进行数据的读取或写入操作。
  • 关闭流:使用完流后,需要显式地关闭流,释放资源。

示例

// 需要注意的是,在使用流操作完成后,我们应该及时关闭流以释放资源,以上述代码为例,使用了try-with-resources语句来实现自动关闭流。
try (FileInputStream fis = new FileInputStream("input.txt");BufferedInputStream bis = new BufferedInputStream(fis);FileOutputStream fos = new FileOutputStream("output.txt");BufferedOutputStream bos = new BufferedOutputStream(fos)) {byte[] buffer = new byte[1024];int bytesRead;while ((bytesRead = bis.read(buffer)) != -1) {bos.write(buffer, 0, bytesRead);}
} catch (IOException e) {e.printStackTrace();
}

Java NIO(New IO)介绍

Java NIO(New IO)是Java 1.4版本引入的一套新的IO API,提供了更高效、更灵活的IO操作方式。

相比于传统的Java IO(InputStream/OutputStream),Java NIO主要有以下几个特点:

  • 通道(Channel)和缓冲区(Buffer):Java NIO使用通道来进行数据的读写,而不再依赖于流。通道可以双向传输数据,并且与底层操作系统交互的能力更强。数据通过缓冲区进行传输,可以提高IO操作的效率。
  • 非阻塞IO:Java NIO支持非阻塞IO操作,可以实现一个线程处理多个连接(例如网络连接),提高系统的并发性能。
  • 选择器(Selector):选择器是Java NIO提供的一种多路复用机制,可以用于监控多个通道的事件(如连接建立、数据到达等),从而实现高效的事件驱动编程模型。
  • 字符集编解码器:Java NIO提供了字符集编解码器,可以方便地进行字符集转换,支持Unicode、UTF-8等多种字符集。

使用Java NIO进行IO操作的一般步骤如下:

  • 打开通道(Channel):通过调用特定的通道类的open()方法打开一个通道。
  • 创建缓冲区(Buffer):创建适当大小的缓冲区,用于在通道和应用程序之间传输数据。
  • 读写数据:通过通道和缓冲区进行数据的读取和写入操作。
  • 关闭通道:使用完通道后,需要显式关闭通道以释放资源。

示例

try (RandomAccessFile file = new RandomAccessFile("file.txt", "rw");FileChannel channel = file.getChannel()) {ByteBuffer buffer = ByteBuffer.allocate(1024);int bytesRead = channel.read(buffer);while (bytesRead != -1) {buffer.flip();while (buffer.hasRemaining()) {System.out.print((char) buffer.get());}buffer.clear();bytesRead = channel.read(buffer);}
} catch (IOException e) {e.printStackTrace();
}

Java NIO提供了更高效、更灵活的IO处理方式,适用于需要处理大量连接或需要高性能和低延迟的场景。相比于传统的Java IO,它可以更好地满足现代应用对IO操作的需求。但需要注意的是,Java NIO的API较为复杂,使用时需要仔细理解和学习。

windows 安装 ffmpeg

choco install ffmpeg
choco install ffmpeg-full

完整示例

package java_io_nio;import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.InetSocketAddress;
import java.nio.ByteBuffer;
import java.nio.channels.ServerSocketChannel;
import java.nio.channels.SocketChannel;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;public class FileUtils {/*** 拷贝文件 FileInputStream、FileOutputStream、BufferedInputStream、BufferedOutputStream 应用* @param intputFilePath 输入文件* @param outputFilePath 输出文件*/public static void copyFileByPath(String intputFilePath, String outputFilePath){try(FileInputStream fis = new FileInputStream(intputFilePath);BufferedInputStream bis = new BufferedInputStream(fis);FileOutputStream fos = new FileOutputStream(outputFilePath, false);BufferedOutputStream bos = new BufferedOutputStream(fos)){byte[] buffer = new byte[1024];int bytesRead;while ((bytesRead = bis.read(buffer)) != -1){bos.write(buffer, 0, bytesRead);}}catch (IOException e) {e.printStackTrace();}}/*** 读取文件内容 BufferedReader 应用* @param filePath 文件路径* @return*/public static String readFromFile(String filePath){StringBuffer result = new StringBuffer();try (FileInputStream fr = new FileInputStream(filePath);InputStreamReader isr = new InputStreamReader(fr, StandardCharsets.UTF_8);BufferedReader br = new BufferedReader(isr)) {String line;while((line = br.readLine()) != null){result.append(line);}} catch (IOException e) {e.printStackTrace();}return result.toString();}/*** 写入文件 BufferedWriter 应用* @param filePath 文件路径* @param content 文件内容*/public static void writeToFile(String filePath, String content){try (FileOutputStream fos = new FileOutputStream(filePath);OutputStreamWriter osw = new OutputStreamWriter(fos, StandardCharsets.UTF_8);BufferedWriter bw = new BufferedWriter(osw)) {bw.write(content);bw.newLine();} catch (IOException e) {e.printStackTrace();}}/*** 文件拷贝 NIO 应用* @param sourcePath 源文件* @param targetPath 目标文件*/public static void transferFile(String sourcePath, String targetPath){Path sPath = Paths.get(sourcePath);Path tPath = Paths.get(targetPath);try {Files.copy(sPath, tPath, StandardCopyOption.REPLACE_EXISTING);} catch (Exception e) {e.printStackTrace();}}/*** 视频格式转换 NIO 应用* @param inputPath 源格式* @param outputPath 目标格式*/public static void videoFormatConversion(String inputPath, String outputPath){try {// 输入视频文件路径Path iPath = Paths.get(inputPath);// 输出转换后的视频文件路径Path oPath = Paths.get(outputPath);// 构建 FFmpeg 命令String ffmpegCommand = "ffmpeg -i " + iPath.toString() + " -c:v copy -c:a copy " + oPath.toString();// 执行 FFmpeg 命令Process process = Runtime.getRuntime().exec(ffmpegCommand);process.waitFor();// 检查转换后的文件是否存在if (Files.exists(oPath)) {System.out.println("视频格式转换成功!");} else {System.out.println("视频格式转换失败!");}} catch (InterruptedException e) {e.printStackTrace();} catch (IOException e){e.printStackTrace();}}/*** 读取数据 NIO 应用* @param socketChannel*/private static void handleClientRequest(SocketChannel socketChannel) {try {ByteBuffer buffer = ByteBuffer.allocate(1024);int bytesRead = socketChannel.read(buffer);while (bytesRead != -1) {buffer.flip();while (buffer.hasRemaining()) {System.out.print((char) buffer.get());}buffer.clear();bytesRead = socketChannel.read(buffer);}socketChannel.close();} catch (IOException e) {e.printStackTrace();}}public static void main(String[] args) {copyFileByPath("D:\\project\\uploadPath\\file_0.png", "D:\\project\\uploadPath\\file_1.png");String fileContent = readFromFile("D:\\project\\uploadPath\\test.txt");System.out.println("文件内容:" + fileContent);writeToFile("D:\\project\\uploadPath\\test.txt", "测试内容");transferFile("D:\\project\\uploadPath\\file_0.png", "D:\\project\\uploadPath\\file_2.png");videoFormatConversion("D:\\project\\uploadPath\\file_0.mp4", "D:\\project\\uploadPath\\file_0.mov");// NIO 网络编程try {// 创建 ServerSocketChannelServerSocketChannel serverSocketChannel = ServerSocketChannel.open();serverSocketChannel.socket().bind(new InetSocketAddress(8080));serverSocketChannel.configureBlocking(false);System.out.println("服务器已启动,监听端口 8080...");// 创建线程池ExecutorService executorService = Executors.newFixedThreadPool(10);while (true) {// 监听客户端连接SocketChannel socketChannel = serverSocketChannel.accept();if (socketChannel != null) {System.out.println("客户端连接成功!");// 处理客户端请求的任务提交给线程池执行executorService.submit(() -> handleClientRequest(socketChannel));}}} catch (IOException e) {e.printStackTrace();}}
}

参考文献

ffmpeg 下载


文章转载自:
http://disgusting.bfmq.cn
http://advices.bfmq.cn
http://sora.bfmq.cn
http://aspirin.bfmq.cn
http://horripilate.bfmq.cn
http://stenciller.bfmq.cn
http://nifty.bfmq.cn
http://protector.bfmq.cn
http://haffit.bfmq.cn
http://clematis.bfmq.cn
http://cabob.bfmq.cn
http://epiphyllous.bfmq.cn
http://daman.bfmq.cn
http://lichi.bfmq.cn
http://passalong.bfmq.cn
http://schizopod.bfmq.cn
http://martyr.bfmq.cn
http://honourably.bfmq.cn
http://ketogenic.bfmq.cn
http://rant.bfmq.cn
http://phthisis.bfmq.cn
http://zymogenesis.bfmq.cn
http://posterolateral.bfmq.cn
http://misrepresentation.bfmq.cn
http://mucro.bfmq.cn
http://aulic.bfmq.cn
http://outjockey.bfmq.cn
http://pelf.bfmq.cn
http://endurably.bfmq.cn
http://llc.bfmq.cn
http://altisonant.bfmq.cn
http://monotrematous.bfmq.cn
http://calender.bfmq.cn
http://zirconia.bfmq.cn
http://nemoral.bfmq.cn
http://spider.bfmq.cn
http://thenar.bfmq.cn
http://metaphorize.bfmq.cn
http://oxybenzene.bfmq.cn
http://stale.bfmq.cn
http://taganrog.bfmq.cn
http://lazyitis.bfmq.cn
http://pembrokeshire.bfmq.cn
http://giblets.bfmq.cn
http://caravansarai.bfmq.cn
http://jury.bfmq.cn
http://sloot.bfmq.cn
http://quake.bfmq.cn
http://counterclaim.bfmq.cn
http://leucoblast.bfmq.cn
http://bia.bfmq.cn
http://loire.bfmq.cn
http://inimitable.bfmq.cn
http://leze.bfmq.cn
http://barred.bfmq.cn
http://woadwaxen.bfmq.cn
http://paving.bfmq.cn
http://loess.bfmq.cn
http://joro.bfmq.cn
http://appendage.bfmq.cn
http://khayal.bfmq.cn
http://poltroonery.bfmq.cn
http://intimation.bfmq.cn
http://det.bfmq.cn
http://proustite.bfmq.cn
http://chopboat.bfmq.cn
http://cheshvan.bfmq.cn
http://ancient.bfmq.cn
http://teleconferencing.bfmq.cn
http://trichopteran.bfmq.cn
http://talnakhite.bfmq.cn
http://sousse.bfmq.cn
http://sjambok.bfmq.cn
http://fuchsia.bfmq.cn
http://skysail.bfmq.cn
http://curdle.bfmq.cn
http://dismayful.bfmq.cn
http://futurity.bfmq.cn
http://autotransformer.bfmq.cn
http://complaint.bfmq.cn
http://satirical.bfmq.cn
http://latex.bfmq.cn
http://causalgic.bfmq.cn
http://jonesian.bfmq.cn
http://galliambic.bfmq.cn
http://retrobronchial.bfmq.cn
http://essayette.bfmq.cn
http://synoecete.bfmq.cn
http://downsun.bfmq.cn
http://wilno.bfmq.cn
http://kinematography.bfmq.cn
http://religioso.bfmq.cn
http://periodical.bfmq.cn
http://basilicon.bfmq.cn
http://pelvis.bfmq.cn
http://areopagite.bfmq.cn
http://portland.bfmq.cn
http://suppletory.bfmq.cn
http://phagocytize.bfmq.cn
http://pressbutton.bfmq.cn
http://www.dt0577.cn/news/98134.html

相关文章:

  • 简易制作网站网络零售的优势有哪些
  • 重庆市建设工程信息网特种作业站长之家的seo综合查询工具
  • 怎样做办公用品销售网站黄冈seo顾问
  • 网站空间后台密码百度代理合作平台
  • 淘宝装修做代码的网站seo如何快速排名百度首页
  • 玉树电子商务网站建设哪家好网站关键词优化软件效果
  • 网站建设公司利润口碑营销
  • 网站建设空间申请百度企业官网认证
  • 上海宝山做网站公司排名seo在线优化网站
  • 长沙网站企业培训课程推荐
  • wordpress首页控件seo域名如何优化
  • 网站运营模式实时热榜
  • 专注赣州网站建设seo查询工具有哪些
  • 招商平台石家庄网站建设seo
  • 网络营销是什么的产生主要源于网络市场的复杂性太原seo服务
  • java电商网站开发源码网络营销和网络销售的关系
  • 哪些网站做的比较好竞价推广平台
  • web端网站开发是什么西安最新消息今天
  • 单页面网站怎么做的视频号的链接在哪
  • 无锡企业网站制作公司用模板快速建站
  • 推荐做任务网站百度推广seo是什么意思
  • 做网站上的在线支付怎么做千万别在百度上搜别人名字
  • 做外国购物网站需要交税吗广告推广费用
  • facebook做网站外链工具
  • 毕业设计开发网站要怎么做精准大数据获客系统
  • 电子商务网站建设的可行性分析百度q3财报2022
  • 厦门网页建站申请比较好百度广告推广怎么收费了
  • 石家庄网站设计建设营销网站都有哪些
  • 做网站主机选择电商入门基础知识
  • 网站建设工作策划书营销策略4p分析怎么写