201711671224「Javaプログラミング」第14章の学習の要約

コンテンツの概要を学びます

まず、NIOを知っています

1.NIOの物語

  章XベースのInputStreamを導入しました。OutputStream、リーダ、ライタ、入力および出力。高度な入力/出力処理については、Java JDK1.4順番にNIO(新IO)、およびJava SE7を提供するために、最初から提供NIO2、認識し、これらの高度な入力/出力処理APIを利用し、入力が処理効率/出力はなります大きな助け。入力ストリームは、OutputStreamの入力/出力は、基本的には、直接バイトの配列に直面しているものの、低レベルの処理のバイトが、実際には大部分のバイトアレイブロック全体の処理のために。たとえば、データ・ブロックを読んだ後、実際には、セクション10.1.1ダンプ()メソッド、、、および全体の書き込みデータの高速で見られていますが、バイトのバイト[]、読み取りが記録されなければならないの数に対処する必要がありますあなたは、書き込み[]起源のバイトとバイト数を指定する必要があります。

  java.ioパッケージには、いくつかの装飾を持っていますが、限り、文字列操作の関心のバイトやブロックなどの場合には、これらのクラスは、必ずしも、インデックスを処理するために、適切な独自のAPIを書き、または関連リンク・ライブラリーを見つける必要がありませんが、マークやその他の詳細。データを処理するときにNIOデータ・ノードを使用してアダプタをチャネルにストリーム入力/出力用の入力ストリームに対して、送信元および宛先データへのOutputStreamアダプタと、NIOを使用して、関心のあるバッファにバッファ容量を設定することができブロックフラグマークされたデータ・ブロック、クリア()、巻き戻し()、フリップ()、コンパクト()高度な操作。

2.Channelアーキテクチャと操作

   NIOは、クラスに関連付けられたチャネルインターフェイスに、いるjava.nio.channelsスイートに位置し、チャネルインタフェースはAutoClosableサブインターフェースであり、したがって文法リソースを使用することができJDK7後にシャットダウンしようとしている、方法)(チャネルインターフェイスでいるisOpenを添加チャネルが開いているか否かを確認するために使用しました。まず第一に、あなたは最初に示すように、メインチャンネルのアーキテクチャを継承知ってもらうことができます。

 

   ByteChannelは任意の方法を定義していない、単にByteChannel SeekableByteChannelサブインターフェイスは、次のデータアクセス位置を変更して読み取ることができ、動作ReadableByteChannelとWritableByteChannelを継承。

 

1.3Bufferアーキテクチャと操作

  NIOは、設計において、データはバッファーjava.nio.Bufferで処理され、バッファは、データブロックにクリア()、巻き戻し()、フリップ()、(コンパクト)高度な操作を定義する抽象クラスは、あります操作の戻り値の型は、バッファは、実際には、このに戻ります。

    バッファクラスには、アーキテクチャを継承します

 

 

二、NIO2ファイルシステム

1.NIO2アーキテクチャ

NIO2ファイルシステムAPI限り、ファイルシステム操作のような、これらの標準インターフェースとクラスに基づいて、アプリケーション開発者として、標準インターフェースとクラスのセットを提供します。アプリケーション開発者は、主に使用java.nio.fileとjava.nio.file.attribute、抽象クラスまたはインタフェースのパケットは、ファイルシステムを操作するプロバイダによって運営されている必要があります。センターNIO2ファイルシステムjava.nio.file.spi.FileSystemProvider、それ自体は抽象クラスです。ファイルシステムプロバイダは、クラス操作です。効果は、操作対象java.nio.fileのjava.nio.file.attribute様々な抽象クラスまたはインタフェースが生成されています。

2.オペレーティング・パス

最も基本的な方法を使用すると、文字列のパスを使用することで、相対パスと絶対パスを使用することができ、パスのインスタンスを取得したい、あなたはPaths.get()メソッドを使用することができます。実施例は単にパス経路情報と、実際の文書またはフォルダ必ずしも存在しないに対応する経路を代表します。

 

ドキュメントとディレクトリの操作

如果想要删除Path代表的文档或目录,可以使用Files.delete()方法,如果不存在,会抛出NoSuchFileException,如果因目录不为空而无法删除文档,会抛出DirectoryNotEmptyException。使用Files.deleteIfExists()方法也可以删除文档,这个方法在文档不存在时调用,并不会抛出异常。Files.copy()还有两个重载版本,一个是接受InputStream作为来源,可直接读取数据,并将结果复制至指定的Path中;另一个Files.copy()版本是将来源Path复制至指定的OutputStream。若要进行文档或目录移动,可以使用Files.move()方法,使用方式与Files.copy()方法类似,可指定来源Path、目的地Path与CopyOption。

.过滤、搜索文档

    如果想在列出目录内容时过滤想显示的文档,例如只想显示.class与.jar文档,可以在使用Files.newDirectoryStream()时,将第二个参数指定过滤条件为*.{class,jar}。Files.newDirectoryStream()的另一版本接受DirectoryStream.Filter接口操作对象,如果Glob语法无法满足条件过滤需求,可以自行操作DirectoryStream.Filter的accept()方法自定义过滤条件。

代码调试中的问题和解决过程

  • 暂无

其他(感悟、思考等)

参考资料

  • 《Java程序设计》

おすすめ

転載: blog.csdn.net/nemeziz/article/details/85042782