I presume you are asking the question in the context of databases. A database on secondary storage (disk drives) is organized into one or more files, with each file consisting of many records. Each record corresponds to a row in a table.
A heap file or an unordered file is one in which records are placed as they are inserted i.e., they are just appended at the end of the file for the corresponding table.
A hash file is another type of file organization wherein a record is not inserted sequentially but inserted based on a hash function calculation. The hash functions are similar to those used in the hash table data structures. It can be as trivial as numerical value of first character of record, but can be very complicated (eg. involving mod functions etc.)
As a consequence of how data is stored in these files, there are many differences between them. In heap files, the insertion of records is very efficient. However, since the records are not stored in any particular order, search for a specific record has to be a linear search, making search a very expensive operation. Deletion of a record is tricky as well: the record has to be searched for, retrieved, marked as deleted and them written back to the file. The space with deleted items can't be reused right away and a process needs to be run periodically to clean up the deleted records.
In hash files, search and deletion are more efficient. Insertion is usually a O(1) operation if there are no collisions. However, hashing has some downsides as well. If a table is hashed on one field then search for records using other fields can be tricky. For instance, consider the example of Course(Student No, Student Name, Student email, Year of Study). If Course is hashed based on StudentNo, searching for a specific StudentName requires a linear search. Also, hashing is inefficient if the query is for a range of values.