Como copiar arquivo em java

Estou tentando copiar um arquivo em java e movê-lo para uma nova pasta. Este é o código que eu tenho usado, mas sempre recebo esse erro "(Acesso negado) no diretório especificado". Existe uma maneira de corrigir isso ou uma maneira melhor de copiar os arquivos? obrigado

try{
          File f1 = new File(fpath);
          File f2 = new File("C:/users/peter/documents/foldertest2/hats");
          InputStream in = new FileInputStream(f1);

          //For Append the file.
          //OutputStream out = new FileOutputStream(f2,true);

          //For Overwrite the file.
          OutputStream out = new FileOutputStream(f2);

          byte[] buf = new byte[1024];
          int len;
          while ((len = in.read(buf)) > 0){
            out.write(buf, 0, len);
          }
          in.close();
          out.close();
          System.out.println("File copied.");
        }
        catch(FileNotFoundException ex){
          System.out.println(ex.getMessage() + " in the specified directory.");
          System.exit(0);
        }
        catch(IOException e){
          System.out.println(e.getMessage());      
        }

ATUALIZAÇÃO: verifiquei as permissões da pasta e todas estão abertas para todos os usuários e os meus