I got to thinking that if we store data in a text file, it is stored in a linear fashion. While you can store things in sorted order, there’s always the chance that the thing you’re looking for is last in the file. 
In my algorithms course, there was a lot of talk about efficient ways to organize data within a Java/python/C program. You can create a binary search tree object, and all is well. But nothing was mentioned about storing a hard copy of said data in an efficient manner. 
My question is this: Is there a way to store a hard copy of some data in a binary search tree format? So that when you go to read from the file in Java, for example, Java can quickly “jump” left or right, and process the data in an efficient manner?
My question is this: Is there a way to store a hard copy of some data
  in a binary search tree format? So that when you go to read from the
  file in Java, for example, Java can quickly “jump” left or right, and
  process the data in an efficient manner?

There is no special impediment to storing binary search tree data on disk -- even in ways that can be processed fairly directly.  You rely on fixed-size storage units, and that allows you to use some form of storage unit indices in place of pointers.  Disk storage is basically random-access, though at the device and O/S levels, I/O is performed in blocks of device- and filesystem-dependent size.
There are other variations on search trees that tend to be more efficient for use with disk storage, however.  B-trees, for example, were designed and are used for this purpose.  In general, these variations produce shorter, wider trees, often tuned so that nodes are the size of one disk block.
Storing a hard copy of data in a binary search tree format