当前位置: > 投稿>正文

黑匣子找到了吗,黑匣子有定位功能吗(简单易懂讲IO)

03-07 互联网 未知 投稿

关于【黑匣子找到了吗】,黑匣子有定位功能吗,今天向乾小编给您分享一下,如果对您有所帮助别忘了关注本站哦。

1、简单易懂讲IO

流式 IO 是传统 IO,通过构造输入输出流,讲信息从一个地方读取,输出到另一个地方。常见的有读取文件以及写入文件。

基本 API

流失 IO 基本可以分为两个门派,一个以InputStream 和 OutputStream 为代表的老牌 IO,一个以 Reader 和 Writer 为代表的新派 IO。

这里仅仅展示最常用 API,其余 API 可以查阅 jdk API

黑匣子找到了吗,黑匣子有定位功能吗(简单易懂讲IO)

输入

基本输入

黑匣子找到了吗,黑匣子有定位功能吗(简单易懂讲IO)

装饰器输入

基本输入中的流对象,都可以作为装饰器对象的构造器参数

黑匣子找到了吗,黑匣子有定位功能吗(简单易懂讲IO)

输出

基本输出

黑匣子找到了吗,黑匣子有定位功能吗(简单易懂讲IO)

装饰器输出

黑匣子找到了吗,黑匣子有定位功能吗(简单易懂讲IO)

常见用法

读取文件

使用 FileInputStream 读取

下面例子将输入流放入 try-with-resource 块中,以实现资源的自动关闭,本文下面例子都将采用这种形式。

这里可以看到,是一个字节一个字节的读,所以要将其转为 char 才能正常展示,否则展示的都是字节。 由于 InputStream 是字节流,因此,这里读取到的中文展示乱码。

public class Read { /** * 使用 FileInputStream 直接读取 * 由于 InputStream 不支持 Unicode 编码,所以中文显示会乱码 */ public static void fileInputStream() { try ( FileInputStream input = new FileInputStream("Read.java") ) { int n = 0; while (n != -1) { n = input.read(); char c = (char) n; System.out.print(c); } } catch (Exception e) { } } public static void main(String[] args) { Read.fileInputStream(); }}

输出:

package cyrus.file_io.iostream;import java.io.FileInputStream;public class Read { /** * 使用 FileInputStream 直接读取 * 由于 InputStream 不支持 Unicode ç¼–ç ï¼Œæ‰€ä»¥ä¸­æ–‡æ˜¾ç¤ºä¼šä¹±ç  */ public static void fileInputStream() { try ( FileInputStream input = new FileInputStream("Read.java") ) { int n = 0; while (n != -1) { n = input.read(); char c = (char) n; System.out.print(c); } } catch (Exception e) { } } public static void main(String[] args) { Read.fileInputStream(); }}

使用 BufferedInputStream 装饰器读取

以下例子使用 FileInputStream 构造一个 BufferedInputStream 装饰器,该适配器的主要作用是会将读取到的内容填充进缓冲区,其余用法和 FileInputStream 一样。InputStream 是字节流,因此,这里读取到的中文展示乱码。

public class Read { /** * 使用 FileInputStream 构造一个 BufferedInputStream 装饰器,读取,该读取会使用缓冲区 * 由于 InputStream 不支持 Unicode 编码,所以中文会乱码 */ public static void fileInputStreamWithBuffer() { try ( BufferedInputStream input = new BufferedInputStream(new FileInputStream("Read.java")) ) { int n = 0; while (n != -1) { n = input.read(); char c = (char) n; System.out.print(c); } } catch (Exception e) { } } public static void main(String[] args) { Read.fileInputStreamWithBuffer(); }}

输出:

package cyrus.file_io.iostream;import java.io.BufferedInputStream;import java.io.FileInputStream;public class Read { /** * 使用 FileInputStream æž„é€ ä¸€ä¸ª BufferedInputStream 装饰器,读取,该读取会使用缓冲区 * 由于 InputStream 不支持 Unicode ç¼–ç ï¼Œæ‰€ä»¥ä¸­æ–‡ä¼šä¹±ç  */ public static void fileInputStreamWithBuffer() { try ( BufferedInputStream input = new BufferedInputStream(new FileInputStream("Read.java")) ) { int n = 0; while (n != -1) { n = input.read(); char c = (char) n; System.out.print(c); } } catch (Exception e) { } } public static void main(String[] args) { Read.fileInputStreamWithBuffer(); }}

使用 FileReader 进行读取

使用 FileReader 直接读取,这里 Reader 支持 Unicode 编码,因此中文不会乱码,正常显示

public class Read { /** * 使用 FileReader 直接读取 * 由于 Reader 支持 Unicode 编码,因此中文不会乱码,正常显示 */ public static void fileReader() { try ( FileReader reader = new FileReader("Read.java") ) { int n = 0; while (n != -1) { n = reader.read(); char c = (char) n; System.out.print(c); } } catch (Exception e) { } } public static void main(String[] args) { Read.fileReader(); }}

输出:

package cyrus.file_io.iostream;import java.io.BufferedInputStream;import java.io.FileInputStream;import java.io.FileReader;public class Read { /** * 使用 FileReader 直接读取 * 由于 Reader 支持 Unicode 编码,因此中文不会乱码,正常显示 */ public static void fileReader() { try ( FileReader reader = new FileReader("Read.java") ) { int n = 0; while (n != -1) { n = reader.read(); char c = (char) n; System.out.print(c); } } catch (Exception e) { } } public static void main(String[] args) { Read.fileReader(); }}

使用 BufferedReader 装饰器读取

这里使用 FileReader 构造一个 BufferedReader 装饰器,BufferedReader 的主要作用是会将读取到的内容填入缓冲区,并且 BufferedReader 的 lines() 方法将返回一个 stream 流,操作更方便。

public class Read { /** * 使用 FileReader 构造一个 BufferedReader 装饰器,读取,该读取会使用缓冲区 * 由于 Reader 支持 Unicode 编码,因此中文不会乱码,正常显示 */ public static void fileReaderWithBuffer() { try (BufferedReader reader = new BufferedReader(new FileReader("Read.java"))) { reader.lines().forEach(System.out::println); } catch (Exception e) { } } public static void main(String[] args) { Read.fileReaderWithBuffer(); }}

输出:

package cyrus.file_io.iostream;import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.FileInputStream;import java.io.FileReader;public class Read { /** * 使用 FileReader 构造一个 BufferedReader 装饰器,读取,该读取会使用缓冲区 * 由于 Reader 支持 Unicode 编码,因此中文不会乱码,正常显示 */ public static void fileReaderWithBuffer() { try (BufferedReader reader = new BufferedReader(new FileReader("Read.java"))) { reader.lines().forEach(System.out::println); } catch (Exception e) { } } public static void main(String[] args) { Read.fileReaderWithBuffer(); }}

使用 DataInputStream 适配器读取字符串

这里 buildString() 方法读取当前文件,将其拼装为字符串输出,ByteArrayInputStream 读取该字符串的 byte 数组,然后转化为 DataInputStream 适配器进行读取字符串内容。

DataInputStream 主要用于读取基本数据类型

public class Read { /** * 使用 ByteArrayInputStream 构造 DataInputStream 装饰器,输出字符串信息 */ public static void dataInputStream() { try ( DataInputStream inputStream = new DataInputStream(new ByteArrayInputStream(buildString().getBytes())) ) { while (inputStream.available() != 0) { System.out.print((char) inputStream.readByte()); } } catch (Exception e) { } } /** * 通过目前 java 文件构建一个字符串 * * @return */ public static String buildString() { try (BufferedReader reader = new BufferedReader(new FileReader("Read.java"))) { return reader.lines().collect(Collectors.joining("\n")); } catch (Exception e) { } return "ok"; } public static void main(String[] args) { Read.dataInputStream(); }}

写入文件

使用 FileOutputStream 写入

这里直接使用 FileOutputStream 读取 buildString() 方法构造的字符串并将其写入 Read.txt 文件

public class Read { /** * 使用 FileOutputStream 直接写入字符串 */ public static void fileOutputStream() { try ( FileOutputStream output = new FileOutputStream("Read.txt") ) { output.write(buildString().getBytes()); } catch (Exception e) { } } /** * 通过目前 java 文件构建一个字符串 * * @return */ public static String buildString() { try (BufferedReader reader = new BufferedReader(new FileReader("Read.java"))) { return reader.lines().collect(Collectors.joining("\n")); } catch (Exception e) { } return "ok"; } public static void main(String[] args) { Read.fileOutputStream(); }}

输出:实例截图一部分

黑匣子找到了吗,黑匣子有定位功能吗(简单易懂讲IO)

使用 BufferedOutputStream 适配器写入

这里使用 FileOutputStream 构造一个 BufferedOutputStream 适配器,BufferedOutputStream 会使用到缓冲区,加快读取写入速度。

public class Read { /** * 使用 FileOutputStream 构造一个 BufferedOutputStream 装饰器,读取,该写入会使用缓冲区 */ public static void fileOutputStreamWithBuffer() { try ( BufferedOutputStream output = new BufferedOutputStream(new FileOutputStream("Read.txt")); ) { output.write(buildString().getBytes()); } catch (Exception e) { } } /** * 通过目前 java 文件构建一个字符串 * * @return */ public static String buildString() { try (BufferedReader reader = new BufferedReader(new FileReader("Read.java"))) { return reader.lines().collect(Collectors.joining("\n")); } catch (Exception e) { } return "ok"; } public static void main(String[] args) { Read.fileOutputStreamWithBuffer(); }}

后面就不展示输出了,所有的输出都是输出到当前工作目录的Read.txt文件夹下,并且文件内容都是当前 .java 文件的内容

2、飞机黑匣子不能定位吗

飞机黑匣子不能定位吗?是的,确实是不能定位,目前的技术还没有达到这个要求。

飞机上的黑匣子在陆地上没有卫星定位,而且他也不能向外界发出任何的信号,这是确定的,可能有的人会说现在的云备份很强大,我们不能把黑匣子信息上传到云端吗?其实是有一定的技术缺陷的,我们现在通过人工的办法来寻找黑匣子,安排那么多人去寻找,可以看到很多人只拿着铁锹手电筒,金属探测器去寻找黑瞎子,原因就是目前黑匣子没有卫星定位。

首先我们要了解一下黑匣子上为什么不能定位?黑匣子原先的是一个黑色的,后来改成桔红色,可以说是非常的醒目,而且黑匣子上还有反光材料,这些都是为了寻找方便来做的,之所以叫他黑匣子,是因为原先的叫法.

在1965年的时候才改成了现在的说桔红色,目的就是防止万一能够更好找到它,而且从这个图片中我们可以看出黑匣子有两个,一个是飞行记录仪简称F D A,另一个就是做穿的语音记录与检测,叫做CVR,这个东西从表面上看是纯粹的一个长方形的体积大小,外表非常得厚实,还有很多的隔热材料,目的就是为了保存里面的储存信息,它可以承受很多的外界压力,可以承受大约4000多米的深海压力,而且不怕海水也不怕长时间的海水浸泡,所以黑匣子作为一个重要的航空电子设备,如果在巨大的撞击之下也是没有问题的,而且在巨大的冲击力下也能存活下来,所以就具备了抗冲击力,抗传统高温和深海压力的能力,而且还是抗海水浸泡、耐腐蚀液体浸泡的特殊防护能力。

所以在很多的情况下,我们不得不重新认识他的新的功能,但是需要重新设计的是,比如说在陆地上主动发送信号的能力,如果想一想,不管是电磁波还是声波都需要在黑匣子外面挂一个信号接收,或者是发射装置,那么这个装置,可能把它完全封闭的话可以继续把信号屏蔽了,也能向外界发出新的信号。

但是目前的技术水平还是没有达到这样的一个要求,所以在陆地上就没办法给黑匣子装一个信号发生器,就连一个简单的声音报警器也装不了,所以落在陆地上的黑匣子基本上只能靠人工的方法去寻找。

3、第二个黑匣子有什么用

第二个黑匣子主要是记录飞行数据。

例如飞机在飞行过程中的高度、速度、俯仰角、滚转角、航向、垂直速度等状态参数,驾驶员操纵飞机的驾驶杆、驾驶盘、脚蹬位置和通话按钮等参数,以及自动驾驶仪、自动油门等机载系统状态参数。

第一部黑匣子为驾驶舱语音记录器。

黑匣子功能:

第一,数据采集和编码功能。“黑匣子”能够与安装在飞行器上的传感器、航电和机电等设备连接,采集相关设备输出的飞行器状态的相关信息;能够采集驾驶舱环境声音和飞行机组人员之间的通话信息;能够采集驾驶舱环境和驾驶舱设备信息显示等图像信息。

第二,数据存储功能。“黑匣子”采集飞行数据、音频数据、图像数据和数据链数据,通过组织整理后按固定格式进行数据编码,并按固定格式写入存储器,完成数据存储。

第三,数据坠毁保护功能。“黑匣子”的重要用途就是为飞行事故提供客观准确的证据支持。在飞行事故发生时,飞行器大部分时间会承受剧烈冲击、长时间高温火烧、长时间腐蚀性液体浸泡或者长时间海水浸泡等应力。

第四,定位功能。“黑匣子”所具备的水下定位功能,能够在产品入水后,对外发出超声波定位信号,通过特殊的检测定位工具快速定位飞行数据记录系统的位置,从而快速搜寻到飞行记录系统。

4、黑匣子这么重要,为什么空难的时候很难找到黑匣子?

黑匣子这么重要,为什么空难的时候很难找到黑匣子?黑匣子是有定位装置的,它里面有电池,可以让定位装置连续工作一个月,并定期发出位置信号。不过,飞机失事时,有很多未知数。万一黑匣子摔坏了,万一它掉到深海里了,万一它掉落在地形复杂的地方,信号比较弱,加上悬崖峭壁、泥土掩埋、复杂电磁波干扰等等因素,一下子没有发现它的信号,或者信号发不出来,导致黑匣子难以找到也很正常。另外,黑匣子并不是黑色的。为了便于寻找,它往往被涂成非常醒目的红色或橘红色。之所以叫它黑匣子,是因为它往往和飞机失事、人员遇难连在一起,所以才被称为黑匣子。其实,它真正的名字是飞行姿态记录仪。

因为飞机失事常发生在山区或海洋,这样的地形地区对搜救和搜查任务就有极大的挑战,而且飞机失事后引发的飞机解体或爆炸都存在各种不确定性。黑匣子在飞机尾部,如果其掉落在水中也会在失事后30天内发出无线电信号。黑匣子要想具备卫星定位功能,需要有天线来接收导航卫星信号,而黑匣子坚固的金属外壳会屏蔽卫星信号,天线放在外壳外面则很容易被损毁。在当前技术条件下,想做出既能通过卫星信号,又要保证极端环境下外壳的保护作用,很难实现。如果黑匣子被埋在土里,那么导航卫星信号就会受到土的屏蔽,比如开车进隧道时,收音机、手机通话、卫星定位都会失效。参考2019年埃塞俄比亚空难,也是波音737机型,从2000米高速机头幢地,黑匣子在地下20米深处找到。

此次东航客机在高空8000米高度下落,如发生掩埋,可能会更深。而如果黑匣子就在土壤表层,依靠橙色的外观会很容易被目视发现。黑匣子落在水中才是更难被找到的,所以落入水中的话,会有水敏开关启动水下信标工作,通过信标的金属外壳把频率为37.5kHz的超声波信号发射到周围水域(与卫星信号不同,此时金属外壳不会阻挡信号传播),注意超声波信号在空气中极易损耗,这个功能只在水中启动。增加卫星导航定位及对外发送位置模块,需要额外增加黑匣子的大小和复杂度,极端环境下更容易导致整体的损坏。综合考虑下,还是不装卫星定位功能了。不过随着技术的发展,在保证其他功能安全性的前提下,我认为新一代黑匣子可以考虑增加这个功能。

本文关键词:黑匣子能看到视频吗,黑匣子有定位功能吗为什么,黑匣子可以记录什么,黑匣子有定位功能吗为什么找不到,黑匣子能发射信号吗。这就是关于《黑匣子找到了吗,黑匣子有定位功能吗(简单易懂讲IO)》的所有内容,希望对您能有所帮助!更多的知识请继续关注《犇涌向乾》百科知识网站:http://www.029ztxx.com!

版权声明: 本站仅提供信息存储空间服务,旨在传递更多信息,不拥有所有权,不承担相关法律责任,不代表本网赞同其观点和对其真实性负责。如因作品内容、版权和其它问题需要同本网联系的,请发送邮件至 举报,一经查实,本站将立刻删除。

猜你喜欢