質問: Charset.forName("UTF-8"); // 末尾(fileSize-1)から1024byteを取得 channel.position(fileSize - 1 - 1024); System.out.println(channel.read(buffer)); charset.decode(buffer); System.out.println(buffer); } } ``` ### 補足 ソースは現時点ではファイルの最終行を表示させるというソースのつもりです。
回答: とりあえず適当なファイルの中身を出力だけしてみました。 ### 入力ファイル !イメージ説明 ### 出力結果 !イメージ説明 ``` import java.io.IOException; import java.nio.ByteBuffer; import java.nio.channels.SeekableByteChannel; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.StandardOpenOption; public class memo_qa145601 { public static void main(String[] args) throws IOException { // 読み込みモード Path path = Paths.get("C:\\workspace\\tmp\\", "sample.txt"); SeekableByteChannel channel = Files.newByteChannel(path, StandardOpenOption.READ); // ファイルサイズ取得 long fileSize = channel.size(); // 取得のためのバッファを用意 ByteBuffer buffer = ByteBuffer.allocate(1024); // 末尾(fileSize-1)から1024byteを取得 channel.position(fileSize - 1 - 1024); //以下追記です //バッファに読み込み channel.read(buffer); //一旦byte[]配列に入れる byte[] bytes = buffer.array(); //char型にキャストして文字列を出力 for(byte b:bytes) { System.out.println((char) b); } } } ```