JDK1.7は、新しいファイル操作クラスjava.nio.fileパッケージを紹介します。ファイルを操作するための多くの有用な方法を含むファイルクラスがあります。たとえば、ファイルが非表示ファイルであるかどうか、ファイルが読み取り専用ファイルであるかどうかを確認します。開発者は、files.readallbytes(PATH)メソッドを使用して、ファイル全体をメモリに読み込むこともできます。このメソッドはバイト配列を返し、結果を文字列コンストラクターに渡して文字列出力を作成することもできます。この方法により、ファイルのすべてのバイトコンテンツが読み取られると、IOの例外があるか、その他の未確認の例外があるかにかかわらず、リソースが閉じられることが保証されます。これは、最後のブロックコンテンツにファイルを読み取った後、ファイルを閉じる必要がないことを意味します。この方法は、メモリスペースが不十分な場合があるため、大きなファイルの読み取りには適していないことに注意してください。また、開発者は、例外や解析エラーを回避するために、ファイルの文字エンコードを指定する必要があります。
ReadallBytes(PATH)メソッドのソースコード:
<span style = "font-size:32px;"> </span> <span style = "font-size:18px;">/***ファイルからすべてのバイトを読み取ります。このメソッドは、すべてのバイトが読み取られている場合、またはI/Oエラー、またはその他のランタイム *例外がスローされたときに *ファイルが閉じられることを保証します。 *この方法は、すべてのバイトをバイト配列に読み込むのが便利である単純なケースを対象としていることに注意してください。大きなファイルを読むことを意図したものではありません。 * * @param Path *ファイルへのパス * * @returnファイルから読み取られたバイトアレイを含むバイト配列 * * @throws ioException * I/Oエラーが発生した場合 *ファイルの2Gを超える場合 *の読み取り *メモリオーバーフロー例外がスローされます * @throws OutOFMEMORYERROR * * @Throws SecurityException *デフォルトのプロバイダーの場合、セキュリティマネージャーがインストールされている場合、{@link SecurityManager#CheckRead(String)CheckRead} *メソッドが呼び出され、ファイルへの読み取りアクセスが確認されます。 */</span><span style="font-size:18px;"> public static byte[] readAllBytes(Path path) throws IOException { try (SeekableByteChannel sbc = Files.newByteChannel(path); InputStream in = Channels.newInputStream(sbc)) {//JDK1.7 try-with-resource long size = sbc.size(); if(size>(long)max_buffer_size)新しいoutofmemoryError( "必要な配列サイズが大きすぎる")をスローします。 return read(in、(int)size); }} </span>ファイルの1行のみが読み取られます
パッケージEntryNio; java.io.ioexceptionをインポートします。 java.nio.file.filesをインポートします。 java.nio.file.pathsをインポートします。 public class bufferandchannel {public static void main(string [] args){try {system.out.println(new String(files.readallbytes(paths.get( "://filechannelimpl.java")))); } catch(ioexception e){e.printstacktrace(); }}}Readalllinesメソッドのソースコード
public static list <string> readalllines(Path Path、charset cs)throws ioexception {try(bufferedreader reader = newbufferedreader(path、cs)){list <string> result = new ArrayList <>(); for(;;){string line = reader.readline(); if(line == null)break; result.add(line); } return result; }}パッケージEntryNio; java.util.listをインポートします。 java.io.ioexceptionをインポートします。 java.nio.charset.standardcharsetsをインポートします。 java.nio.file.filesをインポートします。 java.nio.file.pathsをインポートします。 public class bufferandchannel {public static void main(string [] args){//テキストファイルの場合は、このように読むこともできます。 readalllinesメソッドを呼び出す{<span style = "white-space:pre"> </span> // 2番目のパラメーターはJDK1.8の後に省略できます。デフォルトはutf-8エンコードリスト<string> lines = files.readalllines(paths.get( "c://filechannelimpl.java")、stardingcharsets.utf_8);です。 stringbuilder sb = new StringBuilder(); for(string line:lines){sb.append(line+"/n"); ///r/n newline} string fromfile = sb.toString(); system.out.println(fromfile); } catch(ioexception e){e.printstacktrace(); }}}Java8ストリームの使用方法:
まず、ソースコードの実装を見てください
public static stream <string> lines(パスパス)はioexception {return lines(path、stardandcharsets.utf_8)をスローします。 }パッケージEntryNio; java.io.ioexceptionをインポートします。 java.nio.file.filesをインポートします。 java.nio.file.pathsをインポートします。 public class bufferandchannel {public static void main(string [] args){// java8 adds lines method try {// java8は、ストリーミングを使用してファイルを読み取り、より効率的なファイルを作成します。 sans-serif; ">" c://filechannelimpl.java "</span>))。foreach(system.out :: println); } catch(ioexception e){e.printstacktrace(); }}}ファイルを読み取り、ファイルを書き込むのに必要な行は1つだけです。
パッケージEntryNio; java.util.arraysをインポートします。 java.util.listをインポートします。 java.io.ioexceptionをインポートします。 java.nio.file.filesをインポートします。 java.nio.file.pathsをインポートします。 java.nio.file.standardopenoptionをインポートします。 public class bufferandchannel {public static void main(string [] args){// java8は、行メソッドstring filepath = "c://filechannelimpl.java"; try {// java8はストリームでファイルを読み取ります。これはより効率的/*files.lines(paths.get(filepath))。 e.printstacktrace(); * / /* files.readalllines(パスパス)メソッドfiles.write()用に設計されたリストの値<string>タイプの値を返します。files.write()が繰り返し可能なパラメーターを渡す必要があるため<? charquence> type * * files.write(パスパス、iterable <?charsequence> lines、openoption ... options) */ list <string> stringstream = files.readalllines(paths.get(filepath)); // files.lines(パスパス)ストリーム<string>を返すため、次の方法を使用して<string> // list <strings> stringstream2 = arrays.aslist((string [])files.lines(paths.get(filepath))。toarray())になります。 // StandardOpenoptionは列挙クラスです。ファイルが現在paths.get()が存在しない場合、3番目のパラメーターはstardentopenoption.create_new //ファイルが存在する場合、java.nio.filealeadexistsection例外ファイルをスローすることができます。 } catch(ioexception e){e.printstacktrace(); }}}上記の記事jdk1.7 java.nio.file.filesでは、上記のファイルを実現するために1行のコードのみが必要です。これは私があなたと共有するすべてのコンテンツです。参照を提供できることを願っています。wulin.comをもっとサポートできることを願っています。