
- 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 - FileDescriptor sync() method
Description
The Java FileDescriptor sync() method forces all system buffers to be written to the disk. It ensures that data written to a file is physically stored on the disk, preventing data loss in case of a system crash.
Declaration
Following is the declaration for java.io.FileDescriptor.sync() method −
public void sync()
Parameters
NA
Return Value
The method does not return any value.
Exception
SyncFailedException− This exception is thrown when the buffer cannot be flushed or because the system cannot guarantee synchronization of all the buffers with the physical media.
Example - Usage of FileDescriptor sync() method
The following example shows the usage of Java FileDescriptor sync() method.
FileDescriptorDemo.java
package com.tutorialspoint; import java.io.FileDescriptor; import java.io.FileInputStream; import java.io.FileOutputStream; public class FileDescriptorDemo { public static void main(String[] args) { FileInputStream fis = null; FileOutputStream fos = null; FileDescriptor fd = null; byte[] b = {65,66,67,68,69,70}; try { fos = new FileOutputStream("test.txt"); fd = fos.getFD(); // writes byte to file output stream fos.write(b); // flush data from the stream into the buffer fos.flush(); // confirms data to be written to the disk fd.sync(); // create input stream fis = new FileInputStream("test.txt"); int value = 0; // for every available bytes while((value = fis.read())!= -1) { // converts bytes to char char c = (char)value; // prints char System.out.print(c); } // print System.out.print("\nSync() successfully executed!!"); fos.close(); fis.close(); } catch(Exception e) { // if any error occurs e.printStackTrace(); } } }
Output
Let us compile and run the above program, this will produce the following result−
ABCDEF Sync() successfully executed!!
Example - Using sync() to Ensure Data is Written to Disk
The following example shows the usage of Java FileDescriptor sync() method.
FileDescriptorDemo.java
package com.tutorialspoint; import java.io.File; import java.io.FileDescriptor; import java.io.FileOutputStream; import java.io.IOException; public class FileDescriptorDemo { public static void main(String[] args) { File file = new File("sync_example.txt"); try (FileOutputStream fos = new FileOutputStream(file)) { FileDescriptor fd = fos.getFD(); // Get file descriptor // Write data to the file fos.write("Hello, this is a test for sync method.".getBytes()); // Force data to be written to disk fd.sync(); System.out.println("Data successfully written and synced to disk."); } catch (IOException e) { e.printStackTrace(); } } }
Output
Let us compile and run the above program, this will produce the following result−
Data successfully written and synced to disk.
Explanation
A FileOutputStream is created for "sync_example.txt".
The getFD() method retrieves the file descriptor (FileDescriptor object).
Data is written to the file using fos.write().
The sync() method is called on the file descriptor, ensuring that the data is immediately written to disk.
The file is automatically closed using try-with-resources.
Example - Using sync() in a Buffered Stream
The following example shows the usage of Java FileDescriptor sync() method.
FileDescriptorDemo.java
package com.tutorialspoint; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileDescriptor; import java.io.FileOutputStream; import java.io.IOException; public class FileDescriptorDemo { public static void main(String[] args) { File file = new File("buffered_sync_example.txt"); try (FileOutputStream fos = new FileOutputStream(file); BufferedOutputStream bos = new BufferedOutputStream(fos)) { FileDescriptor fd = fos.getFD(); // Get file descriptor // Write data in a buffered stream bos.write("Buffered stream sync example.".getBytes()); // Flush the buffer bos.flush(); // Force data to be written to disk fd.sync(); System.out.println("Buffered data successfully written and synced to disk."); } catch (IOException e) { e.printStackTrace(); } } }
Output
Let us compile and run the above program, this will produce the following result−
Buffered data successfully written and synced to disk.
Explanation
A BufferedOutputStream wraps the FileOutputStream for efficient writing.
Data is written to the buffered stream.
bos.flush() is called to ensure buffered data is passed to the underlying file stream.
The sync() method is called on the file descriptor, ensuring the data is physically written to disk.
The file is closed automatically using try-with-resources.