Abstract:
A method for selecting a storage path in a file system is presented. The method may provide a matching table to correlate a character pattern with at least one storage path in a file system. A file name including one or more character patterns may be received and the character pattern may be identified. The character pattern may then be correlated with the storage path according to the matching table. Finally, the storage path may be selected to store a file associated with the file name.

Description:
BACKGROUND 
       [0001]    As computer file quantities and usage increase, methods to facilitate file system management and navigation are needed. Storing a new file on an existing computer file system is often cumbersome, requiring the user to designate one of numerous storage paths for file storage. In some cases, shortcuts may be presented to a user to direct file storage towards a predefined path based on historical usage, for example. A user that wishes to group files categorically or topically, however, must sort through myriad storage location options to locate an appropriate storage path. 
       SUMMARY 
       [0002]    Embodiments of the invention have been developed to facilitate file system management and navigation by selecting a file storage path based on a recognized character pattern. 
         [0003]    In one embodiment, a method for selecting a storage path in a file system may include providing a matching table to correlate a character pattern with at least one storage path in a file system. A file name including one or more character patterns may be received and the character pattern may be identified. The character pattern may then be correlated with the storage path according to the matching table. Finally, the storage path may be selected to store a file associated with the file name. 
         [0004]    A corresponding apparatus and computer program product are also disclosed and claimed herein. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0005]    In order that the advantages of the disclosure will be readily understood, a more particular description of embodiments of the invention briefly described above will be rendered by reference to specific embodiments illustrated in the appended drawings. Understanding that these drawings depict only typical embodiments of the invention and are not therefore to be considered limiting of its scope, embodiments of the invention will be described and explained with additional specificity and detail through use of the accompanying drawings, in which: 
           [0006]      FIG. 1  depicts a system implementing an embodiment of the invention; 
           [0007]      FIG. 2  depicts a data model showing relationships between different components of embodiments of the invention; and 
           [0008]      FIG. 3  shows a high-level process for saving a file at a given path in accordance with embodiments of the invention. 
       
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
       [0009]    It will be readily understood that the components of embodiments of the present invention, as generally described and illustrated in the Figures herein, may be arranged and designed in a wide variety of different configurations. Thus, the following more detailed description of the embodiments of the systems and methods of the present invention, as represented in the Figures, is not intended to limit the scope of the disclosure, as claimed, but is merely representative of selected embodiments of the invention. 
         [0010]    Reference throughout this specification to “one embodiment,” “an embodiment,” or similar language means that a particular feature, structure, or characteristic described in connection with the embodiment may be included in at least one embodiment of the present invention. Thus, appearances of the phrases “in one embodiment” or “in an embodiment” in various places throughout this specification are not necessarily all referring to the same embodiment. 
         [0011]    Furthermore, the described features, structures, or characteristics may be combined in any suitable manner in one or more embodiments. One skilled in the relevant art will recognize, however, that embodiments of the invention can be practiced without one or more of the specific details, or with other methods, components, etc. In other instances, well-known structures, or operations are not shown or described in detail to avoid obscuring aspects of the disclosure. 
         [0012]    The illustrated embodiments of the invention will be best understood by reference to the drawings, wherein like parts are designated by like numerals throughout. The following description is intended only by way of example, and simply illustrates certain selected embodiments of the invention that are consistent with the disclosure as claimed herein. 
         [0013]      FIG. 1  shows a system implementing the present invention, including a file system  110 , a file system explorer  120 , a file save component  130 , and a matching table  140 . The file system  110  may organize the information on a permanent storage medium, such as tapes or hard disks, to make it easily accessible while taking into account various constraints, such as security or compression. The file system explorer  120  may provide an interface to interact with the file system  110 . Particularly, the file system explorer  129  may retrieve, create or delete files on the file system  110 . 
         [0014]    The file save component  130  may interact with the file system explorer  120  to save a file on the file system. The file save component  130  may provide as inputs to the file system explorer  120  a file name, a pointer towards an address in memory where the file content is stored, and a path indicating where in the file system  110  the file should be stored. This information may be contained in a table. In one embodiment, for example, the table may be a matching table  140 . 
         [0015]    The matching table  140  may include at least two columns. The first column may contain file name patterns, and the second column may contain file storage paths. Associating a name pattern with a path at a given row in the matching table may allow the file save component  130  to preselect a path in the matching table  140  upon submission of a file name containing a known file name character pattern. Optionally, the matching table  140  may contain several paths for a given character pattern, enabling the file save component  130  to store several copies of the file at the various locations represented by the different paths. 
         [0016]    When a character pattern may be associated with several paths, the matching table  140  may include a third column to identify a particular path as the main path. This may allow the file save component  130  to store the file at the main path only once. The file save component  130  may then create links at locations represented by the paths associated with the character pattern and not marked as the main path. These interrelationships between a file, links and path are described in more detail with respect to  FIG. 2  below. 
         [0017]    A character pattern may be represented in various ways. For example, the character pattern may include a simple string of authorized characters in a path representing a location in a standard file system. In this case, any file name containing the string of characters (such as .jpg) may be associated with the corresponding path in the matching table  140 . 
         [0018]    In other embodiments, the character pattern may be more complex. For example, the character pattern may resemble a character pattern that may be provided to a search engine, such as a regular expression. For instance, a question mark may indicate that there is zero or one of the preceding element. An asterisk may indicate that there are zero or more of the preceding element. The plus sign may indicate that there is one or more of the preceding element. Different types of regular expression syntax, such as UNIX regular expressions or POSIX regular expressions, may be used. 
         [0019]    Referring now to  FIG. 2 , a data model may be used to represent relationships between different components of embodiments of the present invention. Such components may include, for example, a file  210 , a file name  220 , a storage path  230 , a main path  235 , and a link  240 . 
         [0020]    A file  210  may be associated with one file name  220 , one path  230 , which may be identified as a main path  235 , and any number of links  240  which may point towards the file  210 . In one embodiment, a link  340  may be located at a path  230  in the file system. 
         [0021]    Traditional file systems often include a static file structure where files are located at one particular path. File systems with a more relational approach may allow one file to be associated with several different paths. The teachings of the present invention may be easily applied in this case. 
         [0022]    Referring now to  FIG. 3 , a high-level process for storing a file in accordance with embodiments of the present invention may include receiving a file handler  310 , receiving a new file name  320 , and identifying a character pattern in the new file name  330 . The process may further include looking up the character pattern in a table  340  and deciding whether the character pattern is found  350 . If the character pattern is not found, a new character pattern may be identified  330 . If the character pattern is found, a path associated with the found character pattern may be identified  360 , and the file may be saved with the new file name at the identified path location  370 . 
         [0023]    This process may allow a user to select an appropriate path in a folder structure to store the file at a predefined path location  370 . The associated table used for this purpose may be the matching table described above with respect to  FIG. 1 . 
         [0024]    In the case of a plurality of paths associated with the character pattern, the step  370  of saving the file may further include the step of saving a copy of the file at each path location identified in step  360 . If one path among the identified paths is marked as a main path, then only one copy of the file may be stored at the main path location. Links pointing towards the file may be created at the other path locations. 
         [0025]    In another embodiment, a method for storing a file  210  at a predefined path location  230 , the path location  230  may be first associated with a particular character pattern. The character pattern may then be detected in the name  220  of the file to store. 
         [0026]    The invention can take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment containing both hardware and software elements. In one embodiment, the invention is implemented in software, which includes but is not limited to firmware, resident software, microcode, etc. 
         [0027]    Furthermore, the invention may take the form of a computer program product accessible from a computer-usable or computer-readable medium providing program code for use by or in connection with a computer or any instruction execution system. For the purposes of this description, a computer-usable or computer readable medium can be any apparatus that may contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device. 
         [0028]    The medium may be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system (or apparatus or device) or a propagation medium. Examples of a computer-readable medium include a semiconductor or solid state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk and an optical disk. Current examples of optical disks include compact disk—read only memory (CD-ROM), compact disk—read/write (CD-R/W) and DVD. 
         [0029]    A data processing system suitable for storing and/or executing program code may include at least one processor coupled directly or indirectly to memory elements through a system bus. The memory elements may include local memory employed during actual execution of the program code, bulk storage, and cache memories which provide temporary storage of at least some program code in order to reduce the number of times code must be retrieved from bulk storage during execution. 
         [0030]    Input/output or I/O devices (including but not limited to keyboards, displays, pointing devices, etc.) may be coupled to the system either directly, or through intervening I/O controllers. 
         [0031]    Network adapters may also be coupled to the system to enable the data processing system to become coupled to other data processing systems or remote printers or storage devices through intervening private or public networks. Modems, cable modem and Ethernet cards are just a few of the currently available types of network adapters.