
- Java.io - Home
- Java.io - BufferedInputStream
- Java.io - BufferedOutputStream
- Java.io - BufferedReader
- Java.io - BufferedWriter
- Java.io - ByteArrayInputStream
- Java.io - ByteArrayOutputStream
- Java.io - CharArrayReader
- Java.io - CharArrayWriter
- Java.io - Console
- Java.io - DataInputStream
- Java.io - DataOutputStream
- Java.io - File
- Java.io - FileDescriptor
- Java.io - FileInputStream
- Java.io - FileOutputStream
- Java.io - FilePermission
- Java.io - FileReader
- Java.io - FileWriter
- Java.io - FilterInputStream
- Java.io - FilterOutputStream
- Java.io - FilterReader
- Java.io - FilterWriter
- Java.io - InputStream
- Java.io - InputStreamReader
- Java.io - LineNumberInputStream
- Java.io - LineNumberReader
- Java.io - ObjectInputStream
- Java.io - ObjectInputStream.GetField
- Java.io - ObjectOutputStream
- io - ObjectOutputStream.PutField
- Java.io - ObjectStreamClass
- Java.io - ObjectStreamField
- Java.io - OutputStream
- Java.io - OutputStreamWriter
- Java.io - PipedInputStream
- Java.io - PipedOutputStream
- Java.io - PipedReader
- Java.io - PipedWriter
- Java.io - PrintStream
- Java.io - PrintWriter
- Java.io - PushbackInputStream
- Java.io - PushbackReader
- Java.io - RandomAccessFile
- Java.io - Reader
- Java.io - SequenceInputStream
- Java.io - SerializablePermission
- Java.io - StreamTokenizer
- Java.io - StringBufferInputStream
- Java.io - StringReader
- Java.io - StringWriter
- Java.io - Writer
- Java.io package Useful Resources
- Java.io - Discussion
Java - FileInputStream getChannel() method
Description
The Java FileInputStream getChannel() method returns a FileChannel object, which provides advanced file operations such as non-blocking I/O, file locking, memory mapping, and more.
Declaration
Following is the declaration for java.io.FileInputStream.getChannel() method −
public FileChannel getChannel()
Parameters
NA
Return Value
The methods returns the channel ssociated with this file input stream.
Exception
IOException− If any I/O error occurs.
Example - Usage of FileInputStream getChannel() method
The following example shows the usage of Java FileInputStream getChannel() method.
FileInputStreamDemo.java
package com.tutorialspoint; import java.io.IOException; import java.io.FileInputStream; import java.nio.channels.FileChannel; public class FileInputStreamDemo { public static void main(String[] args) throws IOException { FileChannel fc = null; FileInputStream fis = null; int i = 0; long pos; char c; try { // create new file input stream fis = new FileInputStream("test.txt"); // read till the end of the file while((i = fis.read())!=-1) { // get file channel fc = fis.getChannel(); // get channel position pos = fc.position(); // integer to character c = (char)i; // prints System.out.print("No of bytes read: "+pos); System.out.println("; Char read: "+c); } } catch(Exception ex) { // if an I/O error occurs System.out.println("IOException: close called before read()"); } finally { // releases all system resources from the streams if(fis!=null) fis.close(); if(fc!=null) fc.close(); } } }
Output
Assumption
Assuming we have a text file test.txt in current directory, which has the following content. This file will be used as an input for our example program.
ABCDEF
Let us compile and run the above program, this will produce the following result−
No of bytes read: 1; Char read: A No of bytes read: 2; Char read: B No of bytes read: 3; Char read: C No of bytes read: 4; Char read: D No of bytes read: 5; Char read: E No of bytes read: 6; Char read: F
Example - Using getChannel() to Read Data from a File
The following example shows the usage of Java FileInputStream getChannel() method.
FileInputStreamDemo.java
package com.tutorialspoint; import java.io.FileInputStream; import java.io.IOException; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; public class FileInputStreamDemo { public static void main(String[] args) { try (FileInputStream fis = new FileInputStream("example.txt")) { FileChannel channel = fis.getChannel(); // Get FileChannel from FileInputStream ByteBuffer buffer = ByteBuffer.allocate(1024); // Allocate buffer int bytesRead = channel.read(buffer); // Read data into buffer if (bytesRead != -1) { buffer.flip(); // Prepare buffer for reading while (buffer.hasRemaining()) { System.out.print((char) buffer.get()); // Print character by character } } System.out.println("\nFile read successfully using FileChannel."); } catch (IOException e) { e.printStackTrace(); } } }
Output(if example.txt contains "Hello")
Let us compile and run the above program, this will produce the following result−
Hello File read successfully using FileChannel.
Explanation
Open FileInputStream for "example.txt".
Get FileChannel using getChannel().
Allocate a ByteBuffer of size 1024 bytes.
Read data into buffer using channel.read(buffer).
Flip the buffer (switch from writing to reading mode).
Read and print data from the buffer.
Stream is closed automatically using try-with-resources.
Example - Getting File Size Using FileChannel
The following example shows the usage of Java FileInputStream getChannel() method.
FileInputStreamDemo.java
package com.tutorialspoint; import java.io.FileInputStream; import java.io.IOException; import java.nio.channels.FileChannel; public class FileInputStreamDemo { public static void main(String[] args) { try (FileInputStream fis = new FileInputStream("example.txt")) { FileChannel channel = fis.getChannel(); // Get FileChannel long fileSize = channel.size(); // Get file size in bytes System.out.println("File size: " + fileSize + " bytes"); } catch (IOException e) { e.printStackTrace(); } } }
Possible Output(if example.txt has 50 characters)
Let us compile and run the above program, this will produce the following result−
File size: 50 bytes
Explanation
Open FileInputStream for "example.txt".
Get FileChannel from getChannel().
Get the file size using channel.size().
Print the file size in bytes.