Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

For functions that need to index files in a directory and rename them FileName0001, FileName0002, etc... I often need to write a function that splits the file name from the file path and rename the file. When I put the file name and file path back together, I don't have a very good name for the variable that contains both of them and I usually just wind up concatenating them every time I want to use them (usually using them as parameters for functions labeled either filename or filepath) so I never really know what I'm doing until I notice a lot of files being written in the same directory as my binaries.

Anyway, what do I call a file name and a file path? I don't want to call it File, because that usually means the binary information behind the file. I don't want to call it URI because that usually means I've got some sort of protocol, which I don't. I just want a good way to denote "c:\somedir\somedir\somedir\somefile.txt" so as to deconfuse this mess I've just realized I'm in.


Please don't just list your personal preference. I think an excellent answer should "'site its sources". (as in, provide a link to a repository with a good example of the code being used as I described)

share|improve this question
4  
I use filepath and dirpath. –  Yannis Rizos May 30 '12 at 15:23
    
I'd consider fqn or FullyQualifiedName –  gnat May 30 '12 at 15:46
2  
Don't sweat convention. Just make sure you pick an obvious name. I work with guys who hate typing so much they come up with conventions like p_mv1 for var names on the back end stuff. p means it came from a parameter I guess. That's not really the hard part to figure out. What I want to know is what the heck 'mv1' is supposed to stand for. –  Erik Reppen May 30 '12 at 15:46
1  
@ErikReppen Yeah, I'm not concerned about convention, only usability. What I've got is not useable and prone to bugs. It seems like we should never, ever have a variable called "FilePath" –  Peter Turner May 30 '12 at 15:47
1  
There is no "file path and file name". A file path includes a file name. –  kevin cline May 30 '12 at 20:15
show 1 more comment

9 Answers

Why not call it 'Path'? From Wikipedia:

A path, the general form of a filename or of a directory name, specifies a unique location in a file system

share|improve this answer
1  
Path sounds like the path to the file, excluding the file name: c:\somedir\somedir\somedir\ –  B Seven May 30 '12 at 15:20
    
I wouldn't call it that because I don't ever want a directory name, I always want a file name. –  Peter Turner May 30 '12 at 15:28
    
@BSeven: it may sound like that, the Wikipedia definition is the most common meaning for "path". A file path includes the file name. Without the file name, it's a directory path. –  kevin cline May 30 '12 at 20:13
    
Wikipedia can hardly be considered a widely-recognized computer science authority... –  user29079 May 31 '12 at 14:21
add comment

I use fileWithPath. It's clunky but explicit.

share|improve this answer
add comment

What is a widely accepted term

There is nothing like that. Choose the name you like best (my personal favorite is fullFileName).

share|improve this answer
add comment

A path from the root of the file system to the file, including the file name, is usually called a full path. If the path doesn't go all the way back to the root, it's a relative path. If it doesn't include the file name, it's a directory path.

share|improve this answer
8  
I've never seen "full path" before. "Absolute path" is pretty common, though. –  Izkata May 30 '12 at 18:08
2  
I have always used full path and I believe it is the common de-facto standard name. –  user29079 May 31 '12 at 14:18
add comment

As many others suggested, use something that works for you. If you make up a scheme, stick to it, and explain it in the documentation (you're documenting your work, don't you?). Your scheme will last longer, if your able to extend it to cover different files and different paths. What seems to work well ist to construct your filename-holding variables in one central configuration place, for example

  • MyProjectRoot ... Root of your projects files to prepend to your subdirs
  • MyConfigDir = MyProjectRoot + "/conf"
  • MyConfigFile = MyConfigDir + "/complicatedconfiguration.xml"

This way, you not only make it obvious what the individual filenames are standing for, but you also gain a place where you (or someone else working with your code later on) can apply changes that will reflect consistently throughout your project.

For your specific project, I'd be more worried about mixing up source and target, so I'd go with

  • SourcePath, TargetPath for the pathname component
  • FileName (or BaseName) for the filename component common to both, (or SourceBaseName / TargetBaseName if they're not common to both)
  • and possible SourceFile and TargetFile for Path+Filename

And I'd explain this in the preamble of the program/script.

If you want to be very explicit that your FileName component doesn't contain any path component, you could call it BaseName.

So your entire thing is basically constructed from

  • /AbsolutePath/BaseName.Extension
  • ./RelativePath/BaseName.Extension

combined with qualifiers like Source, or Target

share|improve this answer
add comment

In the time of clouds and the Internet, I like to use uri. There's even a RFC. The only problem I see with this naming convention is, when you are using a programming language like C#, where Uri is an Object containing an Uri (of course). Then it would be pretty strange to name a String uri. This is why I always use the Uri object if it is available or create one.

That said, I think that uri is the best choice, since the path given could and should be universal.

share|improve this answer
add comment

We use

fileName = mystuff.txt              
dirName = c:\data\mydocs
pathName = c:\data\mydocs\mystuff.txt
share|improve this answer
add comment

This differs a lot from time to time, but what I usually do is use names along the lines of absoluteDirectoryPath, absoluteFilePath, relativeDirectoryPath, relativeFilePath, directoryName and fileName. This depends on whether I want to access just the directory or the whole path to where the file is located as well.

In addition to this the names will also most likely reflect e.g. what kind of business logic they are affecting, or the content of the files.

share|improve this answer
    
Do absoluteFilePath and relativeFilePath in this context only mean the path of the directory? Or do they include the file as well? –  Peter Turner May 31 '12 at 14:20
    
Good call, edited my answer to hopefully make it less ambiguous. :) –  Andreas Johansson May 31 '12 at 14:28
add comment

For fun, here's another perspective. I worked on the asset management system of a large online game 10 years ago. Here is some of the concepts I concluded to allow for flexibility and scalability.

  • a file (for my design at the time) could contain multiple "files" therefore,
  • the data that makes up a file is called a record
  • the record data is found in a data source (eg : the diskdrive is a type of data source). web/ftp/remote servers are examples of other data sources

A record was accompanied by a 'packing slip' (meta data including its 64 bit MD5 hash, caching rules, etc...). The packing slip also specified the record's "Persistent Name" which was the "fully qualified path + filename" for the local_disk data source.

As the years have passed, I've added to the complexity of this area of study with URI and URL nomenclature. the data source is in effect the "scheme". hence "file:///blablabla

I still battle with this too sometimes. Just keep the file stuff in one place, load the data into memory and the problem kind of goes away :)

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.