I want to read incoming file received in a folder and store the contents of the new file received into a database.
I simulated this by copying one file "a.txt" first and "j.txt" after.
I got the error shown below.
Error
Created: a.txt
1
Created: j.txt
java.nio.file.FileSystemException: C:\Users\khunpaen\folder\j.txt: The process cannot access the file because it is being used by another process.
at sun.nio.fs.WindowsException.translateToIOException(Unknown Source)
at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
at sun.nio.fs.WindowsFileSystemProvider.newByteChannel(Unknown Source)
at java.nio.file.Files.newByteChannel(Unknown Source)
at java.nio.file.Files.newByteChannel(Unknown Source)
at java.nio.file.Files.readAllBytes(Unknown Source)
Codes
    import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardWatchEventKinds;
import java.nio.file.WatchEvent;
import java.nio.file.WatchKey;
import java.nio.file.WatchService;
import java.sql.DriverManager;
import com.mysql.jdbc.PreparedStatement;
public class FileWatch {
    private WatchService watcher = null;
    private Path p;
    private WatchKey watchKey;
    private int count;
    String fileName;
    public FileWatch() {   
        String comName = System.getProperty("user.name");
            p = Paths.get("C:/Users/"+comName+"/folder");
            try { 
                watcher = FileSystems.getDefault().newWatchService();
                watchKey = p.register(watcher, StandardWatchEventKinds.ENTRY_CREATE);
                // repeat forever
                for (;;)
                {
                    watchKey = watcher.take();
                    for (WatchEvent<?> event : watchKey.pollEvents())
                    {
                        WatchEvent.Kind<?> kind = event.kind();
                        if (kind == StandardWatchEventKinds.ENTRY_CREATE) {
                            System.out.println("Created: " + event.context().toString());
                            fileName = event.context().toString();  
                        }
                        String content = read("C:/Users/"+comName+"/folder/"+fileName, StandardCharsets.UTF_8);
                        //System.out.println(content);
                        count = insert(event.context().toString(),content);
                        System.out.println(count);
                        if (kind == StandardWatchEventKinds.OVERFLOW) {
                            continue;
                        }
                    }
                    watchKey.reset();
                }
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    }     
    public int insert(String s,String b) {
        int a = 0;
        try {
            //connect to database   
            java.sql.Connection myConn = DriverManager.getConnection("jdbc:mysql://localhost:3306/demo","root","abcd");
            // the mysql insert statement
            String query = " insert into details (email,text)"
                    + " values (?,?)";
            // create the mysql insert preparedstatement
            PreparedStatement preparedStmt = (PreparedStatement) myConn.prepareStatement(query);
            preparedStmt.setString(1, s);
            preparedStmt.setString(2, s);
            // execute the preparedstatement
            a = preparedStmt.executeUpdate();           
        }
        catch(Exception e) {
            e.printStackTrace();
        }
        return a;
    }
    public String read(String path, Charset encoding) throws IOException    {
        byte[] encoded = Files.readAllBytes(Paths.get(path));
        return new String(encoded, encoding);
    }
}
 
    