public void recoverFiles(javax.swing.JList list, String path) throws FileNotFoundException {
        if (!list.isSelectionEmpty()) {
            int indices[] = list.getSelectedIndices();
            System.out.println("Jumpto value: " + jumpto + "\t\tAll foundAt relative to this");
            byte ar[] = new byte[512];
            diskRoot = new File(path);
            System.out.println("\\\\.\\" + path);
            diskAccess = new RandomAccessFile("\\\\.\\" + diskRoot, "r");
            System.out.println(diskRoot.exists());
            System.out.println(diskRoot.getAbsolutePath());
            ByteBuffer bb = ByteBuffer.allocate(1);
            byte b = Byte.valueOf("1");
            bb.put(b);
            System.out.println(bb.toString());
            for (int k = 0; k < indices.length; k++) {
                try {
                    System.out.println(indices[k]);
                    FileRecord file = files.get(indices[k]);
                    System.out.println(file.getName()+"\t"+file.getFileSize()+"\t"+file.getFoundAt());
                    Long fileLoc = (long) jumpto + (long) file.getFoundAt();
                    
                    
                    System.out.println(diskRoot.getTotalSpace());
            System.out.println(fileLoc);
            
                    System.out.println("Seeking to " + jumpto);
                    diskAccess.seek(jumpto);
                    System.out.println("File Pointer: " + diskAccess.getFilePointer());
                    diskAccess.read(ar);
                    System.out.println(Utils.hex(ar[0]));
                    System.out.println("Long Max " + Long.MAX_VALUE);
                    System.out.println("Long Min " + Long.MIN_VALUE);//System.out.println("File Pointer: "+diskAccess.getFilePointer());           diskAccess.seek(jumpto-235456);
                    System.out.println("File Pointer: " + diskAccess.getFilePointer());
//                    System.out.println("Seeking to " + fileLoc);
//                    diskAccess.seek(fileLoc);
                    System.out.println("File Pointer: " + diskAccess.getFilePointer());
                    FileChannel fc = diskAccess.getChannel();
                    System.out.println("open?" + fc.isOpen());
                    System.out.println("File Pointer: " + diskAccess.getFilePointer());
                    System.out.println("File Position: " + fc.position());
                    fc.position(jumpto);
                    System.out.println("File Position: " + fc.position());
                    if (Utils.hexToInt(Utils.hex(ar[0]), "0") == 0xE5) {
                        System.out.println("Lets recover " + file.getName());
                        //                diskAccess.seek(fileLoc);
                        fc.position(fileLoc);
                        System.out.println("File Position: " + fc.position());
                       //diskAccess.write(1);
                        //                diskAccess.seek(fileLoc);

                        System.out.println("File Pointer: " + diskAccess.getFilePointer());
                        for (i = 0; i <= 10; i++) //Byte 0-10 filename
                        {
                            System.out.print(String.valueOf(Utils.hexToText(Utils.hex(ar[file.getFoundAt() + i]))));
                        }
                        diskAccess.seek(file.getStartSector()*bytes_per_Sector);
                        for(i=0;i<10;i++){
                            System.out.print(diskAccess.read());
                        }
                    } else {
                        System.out.println("Why recover an existing file?");
                        for (i = 0; i <= 10; i++) //Byte 0-10 filename
                        {
                            System.out.print(String.valueOf(Utils.hexToText(Utils.hex(ar[i]))));
                        }
                    }
                    System.out.println(file.getName() + "\t" + file.getFileSize() + "\tfrom" + file.getFoundAt());
                } catch (IOException ex) {
                    Logger.getLogger(FAT32.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        } else {
            System.out.println("Empty selection");
        }
    }