Represents a local file or directory. More...
#include <juce_File.h>
Classes | |
struct | NaturalFileComparator |
Comparator for files. More... | |
Public Types | |
enum | FollowSymlinks { FollowSymlinks::no, FollowSymlinks::noCycles, FollowSymlinks::yes } |
enum | SpecialLocationType { userHomeDirectory, userDocumentsDirectory, userDesktopDirectory, userMusicDirectory, userMoviesDirectory, userPicturesDirectory, userApplicationDataDirectory, commonApplicationDataDirectory, commonDocumentsDirectory, tempDirectory, currentExecutableFile, currentApplicationFile, invokedExecutableFile, hostApplicationPath, windowsSystemDirectory, globalApplicationsDirectory, globalApplicationsDirectoryX86, windowsLocalAppData } |
A set of types of location that can be passed to the getSpecialLocation() method. More... | |
enum | TypesOfFileToFind { findDirectories = 1, findFiles = 2, findFilesAndDirectories = 3, ignoreHiddenFiles = 4 } |
Used in file searching, to specify whether to return files, directories, or both. More... | |
Public Member Functions | |
File ()=default | |
Creates an (invalid) file object. More... | |
File (const File &) | |
Creates a copy of another file object. More... | |
File (const String &absolutePath) | |
Creates a file from an absolute path. More... | |
File (File &&) noexcept | |
Move constructor. More... | |
~File ()=default | |
Destructor. More... | |
void | addToDock () const |
OSX ONLY - Adds this file to the OSX dock. More... | |
bool | appendData (const void *dataToAppend, size_t numberOfBytes) const |
Appends a block of binary data to the end of the file. More... | |
bool | appendText (const String &textToAppend, bool asUnicode=false, bool writeUnicodeHeaderBytes=false, const char *lineEndings="\r\n") const |
Appends a string to the end of the file. More... | |
bool | containsSubDirectories () const |
Returns true if this file is a directory that contains one or more subdirectories. More... | |
bool | copyDirectoryTo (const File &newDirectory) const |
Copies a directory. More... | |
bool | copyFileTo (const File &targetLocation) const |
Copies a file. More... | |
Result | create () const |
Creates an empty file if it doesn't already exist. More... | |
Result | createDirectory () const |
Creates a new directory for this filename. More... | |
std::unique_ptr< FileInputStream > | createInputStream () const |
Creates a stream to read from this file. More... | |
std::unique_ptr< FileOutputStream > | createOutputStream (size_t bufferSize=0x8000) const |
Creates a stream to write to this file. More... | |
bool | createShortcut (const String &description, const File &linkFileToCreate) const |
Windows ONLY - Creates a win32 .LNK shortcut file that links to this file. More... | |
bool | createSymbolicLink (const File &linkFileToCreate, bool overwriteExisting) const |
Tries to create a symbolic link and returns a boolean to indicate success. More... | |
bool | deleteFile () const |
Deletes a file. More... | |
bool | deleteRecursively (bool followSymlinks=false) const |
Deletes a file or directory and all its subdirectories. More... | |
bool | exists () const |
Checks whether the file actually exists. More... | |
bool | existsAsFile () const |
Checks whether the file exists and is a file rather than a directory. More... | |
int | findChildFiles (Array< File > &results, int whatToLookFor, bool searchRecursively, const String &wildCardPattern="*", FollowSymlinks followSymlinks=FollowSymlinks::yes) const |
Searches inside a directory for files matching a wildcard pattern. More... | |
Array< File > | findChildFiles (int whatToLookFor, bool searchRecursively, const String &wildCardPattern="*", FollowSymlinks followSymlinks=FollowSymlinks::yes) const |
Searches this directory for files matching a wildcard pattern. More... | |
int64 | getBytesFreeOnVolume () const |
Returns the number of bytes free on the drive that this file lives on. More... | |
File | getChildFile (StringRef relativeOrAbsolutePath) const |
Returns a file that represents a relative (or absolute) sub-path of the current one. More... | |
Time | getCreationTime () const |
Returns the time that this file was created. More... | |
String | getFileExtension () const |
Returns the file's extension. More... | |
uint64 | getFileIdentifier () const |
Returns a unique identifier for the file, if one is available. More... | |
String | getFileName () const |
Returns the last section of the pathname. More... | |
String | getFileNameWithoutExtension () const |
Returns the last part of the filename, without its file extension. More... | |
const String & | getFullPathName () const noexcept |
Returns the complete, absolute path of this file. More... | |
Time | getLastAccessTime () const |
Returns the last time this file was accessed. More... | |
Time | getLastModificationTime () const |
Returns the last modification time of this file. More... | |
File | getLinkedTarget () const |
If this file is a link or alias, this returns the file that it points to. More... | |
OSType | getMacOSType () const |
OSX ONLY - Finds the OSType of a file from the its resources. More... | |
String | getNativeLinkedTarget () const |
This returns the native path that the symbolic link points to. More... | |
File | getNonexistentChildFile (const String &prefix, const String &suffix, bool putNumbersInBrackets=true) const |
Chooses a filename relative to this one that doesn't already exist. More... | |
File | getNonexistentSibling (bool putNumbersInBrackets=true) const |
Chooses a filename for a sibling file to this one that doesn't already exist. More... | |
int | getNumberOfChildFiles (int whatToLookFor, const String &wildCardPattern="*") const |
Searches inside a directory and counts how many files match a wildcard pattern. More... | |
File | getParentDirectory () const |
Returns the directory that contains this file or directory. More... | |
String | getRelativePathFrom (const File &directoryToBeRelativeTo) const |
Creates a relative path that refers to a file relatively to a given directory. More... | |
File | getSiblingFile (StringRef siblingFileName) const |
Returns a file which is in the same directory as this one. More... | |
int64 | getSize () const |
Returns the size of the file in bytes. More... | |
String | getVersion () const |
If possible, this will try to create a version string for the given file. More... | |
String | getVolumeLabel () const |
Finds the name of the drive on which this file lives. More... | |
int | getVolumeSerialNumber () const |
Returns the serial number of the volume on which this file lives. More... | |
int64 | getVolumeTotalSize () const |
Returns the total size of the drive that contains this file. More... | |
bool | hasFileExtension (StringRef extensionToTest) const |
Checks whether the file has a given extension. More... | |
int | hashCode () const |
Returns a 32-bit hash-code that identifies this file. More... | |
int64 | hashCode64 () const |
Returns a 64-bit hash-code that identifies this file. More... | |
bool | hasIdenticalContentTo (const File &other) const |
Attempts to scan the contents of this file and compare it to another file, returning true if this is possible and they match byte-for-byte. More... | |
bool | hasWriteAccess () const |
Checks whether a file can be created or written to. More... | |
bool | isAChildOf (const File &potentialParentDirectory) const |
Checks whether a file is somewhere inside a directory. More... | |
bool | isBundle () const |
OSX ONLY - Returns true if this file is actually a bundle. More... | |
bool | isDirectory () const |
Checks whether the file is a directory that exists. More... | |
bool | isHidden () const |
Returns true if this file is a hidden or system file. More... | |
bool | isOnCDRomDrive () const |
Returns true if this file is on a CD or DVD drive. More... | |
bool | isOnHardDisk () const |
Returns true if this file is on a hard disk. More... | |
bool | isOnRemovableDrive () const |
Returns true if this file is on a removable disk drive. More... | |
bool | isRoot () const |
Checks whether the path of this file represents the root of a file system, irrespective of its existence. More... | |
bool | isShortcut () const |
Windows ONLY - Returns true if this is a win32 .LNK file. More... | |
bool | isSymbolicLink () const |
Returns true if this file is a link or alias that can be followed using getLinkedTarget(). More... | |
bool | loadFileAsData (MemoryBlock &result) const |
Loads a file's contents into memory as a block of binary data. More... | |
String | loadFileAsString () const |
Reads a file into memory as a string. More... | |
bool | moveFileTo (const File &targetLocation) const |
Moves or renames a file. More... | |
bool | moveToTrash () const |
Moves this file or folder to the trash. More... | |
bool | operator!= (const File &) const |
Compares the pathnames for two files. More... | |
bool | operator< (const File &) const |
Compares the pathnames for two files. More... | |
File & | operator= (const File &otherFile) |
Copies from another file object. More... | |
File & | operator= (const String &newAbsolutePath) |
Sets the file based on an absolute pathname. More... | |
File & | operator= (File &&) noexcept |
Move assignment operator. More... | |
bool | operator== (const File &) const |
Compares the pathnames for two files. More... | |
bool | operator> (const File &) const |
Compares the pathnames for two files. More... | |
void | readLines (StringArray &destLines) const |
Reads the contents of this file as text and splits it into lines, which are appended to the given StringArray. More... | |
bool | replaceFileIn (const File &targetLocation) const |
Replaces a file. More... | |
bool | replaceWithData (const void *dataToWrite, size_t numberOfBytes) const |
Replaces this file's contents with a given block of data. More... | |
bool | replaceWithText (const String &textToWrite, bool asUnicode=false, bool writeUnicodeHeaderBytes=false, const char *lineEndings="\r\n") const |
Replaces this file's contents with a given text string. More... | |
void | revealToUser () const |
Opens Finder, Explorer, or whatever the OS uses, to show the user this file's location. More... | |
bool | setAsCurrentWorkingDirectory () const |
Sets the current working directory to be this file. More... | |
bool | setCreationTime (Time newTime) const |
Changes the creation date for this file. More... | |
bool | setExecutePermission (bool shouldBeExecutable) const |
Changes the execute-permissions of a file. More... | |
bool | setLastAccessTime (Time newTime) const |
Changes the last-access time for this file. More... | |
bool | setLastModificationTime (Time newTime) const |
Changes the modification time for this file. More... | |
bool | setReadOnly (bool shouldBeReadOnly, bool applyRecursively=false) const |
Changes the write-permission of a file or directory. More... | |
bool | startAsProcess (const String ¶meters=String()) const |
Launches the file as a process. More... | |
File | withFileExtension (StringRef newExtension) const |
Returns a version of this file with a different file extension. More... | |
Static Public Member Functions | |
static String | addTrailingSeparator (const String &path) |
Adds a separator character to the end of a path if it doesn't already have one. More... | |
static bool | areFileNamesCaseSensitive () |
Indicates whether filenames are case-sensitive on the current operating system. More... | |
static File | createFileWithoutCheckingPath (const String &absolutePath) noexcept |
Creates a file that simply contains this string, without doing the sanity-checking that the normal constructors do. More... | |
static String | createLegalFileName (const String &fileNameToFix) |
Returns a version of a filename with any illegal characters removed. More... | |
static String | createLegalPathName (const String &pathNameToFix) |
Returns a version of a path with any illegal characters removed. More... | |
static bool | createSymbolicLink (const File &linkFileToCreate, const String &nativePathOfTarget, bool overwriteExisting) |
Create a symbolic link to a native path and return a boolean to indicate success. More... | |
static File | createTempFile (StringRef fileNameEnding) |
Returns a temporary file in the system's temp directory. More... | |
static String | descriptionOfSizeInBytes (int64 bytes) |
Utility function to convert a file size in bytes to a neat string description. More... | |
static void | findFileSystemRoots (Array< File > &results) |
Creates a set of files to represent each file root. More... | |
static File | getContainerForSecurityApplicationGroupIdentifier (const String &appGroup) |
Returns the path to the container shared by all apps with the provided app group ID. More... | |
static File | getCurrentWorkingDirectory () |
Returns the current working directory. More... | |
static juce_wchar | getSeparatorChar () |
The system-specific file separator character. More... | |
static StringRef | getSeparatorString () |
The system-specific file separator character, as a string. More... | |
static File | getSpecialLocation (const SpecialLocationType type) |
Finds the location of a special type of file or directory, such as a home folder or documents folder. More... | |
static bool | isAbsolutePath (StringRef path) |
Returns true if the string seems to be a fully-specified absolute path. More... | |
Private Member Functions | |
bool | copyInternal (const File &) const |
Result | createDirectoryInternal (const String &) const |
void | getFileTimesInternal (int64 &m, int64 &a, int64 &c) const |
String | getPathUpToLastSlash () const |
bool | moveInternal (const File &) const |
bool | replaceInternal (const File &) const |
bool | setFileExecutableInternal (bool) const |
bool | setFileReadOnlyInternal (bool) const |
bool | setFileTimesInternal (int64 m, int64 a, int64 c) const |
Static Private Member Functions | |
static String | parseAbsolutePath (const String &) |
Private Attributes | |
String | fullPath |
Represents a local file or directory.
This class encapsulates the absolute pathname of a file or directory, and has methods for finding out about the file and changing its properties.
To read or write to the file, there are methods for returning an input or output stream.
@tags{Core}
|
strong |
A set of types of location that can be passed to the getSpecialLocation() method.
Enumerator | |
---|---|
userHomeDirectory | The user's home folder. This is the same as using File ("~"). |
userDocumentsDirectory | The user's default documents folder. On Windows, this might be the user's "My Documents" folder. On the Mac it'll be their "Documents" folder. Linux doesn't tend to have one of these, so it might just return their home folder. |
userDesktopDirectory | The folder that contains the user's desktop objects. |
userMusicDirectory | The most likely place where a user might store their music files. |
userMoviesDirectory | The most likely place where a user might store their movie files. |
userPicturesDirectory | The most likely place where a user might store their picture files. |
userApplicationDataDirectory | The folder in which applications store their persistent user-specific settings. On Windows, this might be "\Documents and Settings\username\Application Data". On the Mac, it might be "~/Library". If you're going to store your settings in here, always create your own sub-folder to put them in, to avoid making a mess. On GNU/Linux it is "~/.config". |
commonApplicationDataDirectory | An equivalent of the userApplicationDataDirectory folder that is shared by all users of the computer, rather than just the current user. On the Mac it'll be "/Library", on Windows, it could be something like "\Documents and Settings\All Users\Application Data". On GNU/Linux it is "/opt". Depending on the setup, this folder may be read-only. |
commonDocumentsDirectory | A place to put documents which are shared by all users of the machine. On Windows this may be somewhere like "C:\Users\Public\Documents", on OSX it will be something like "/Users/Shared". Other OSes may have no such concept though, so be careful. |
tempDirectory | The folder that should be used for temporary files. Always delete them when you're finished, to keep the user's computer tidy! |
currentExecutableFile | Returns this application's executable file. If running as a plug-in or DLL, this will (where possible) be the DLL rather than the host app. On the mac this will return the unix binary, not the package folder - see currentApplicationFile for that. See also invokedExecutableFile, which is similar, but if the exe was launched from a file link, invokedExecutableFile will return the name of the link. |
currentApplicationFile | Returns this application's location. If running as a plug-in or DLL, this will (where possible) be the DLL rather than the host app. On the mac this will return the package folder (if it's in one), not the unix binary that's inside it - compare with currentExecutableFile. |
invokedExecutableFile | Returns the file that was invoked to launch this executable. This may differ from currentExecutableFile if the app was started from e.g. a link - this will return the name of the link that was used, whereas currentExecutableFile will return the actual location of the target executable. |
hostApplicationPath | In a plugin, this will return the path of the host executable. |
windowsSystemDirectory | On a Windows machine, returns the location of the Windows/System32 folder. |
globalApplicationsDirectory | The directory in which applications normally get installed. So on windows, this would be something like "C:\Program Files", on the Mac "/Applications", or "/usr" on linux. |
globalApplicationsDirectoryX86 | On a Windows machine, returns the directory in which 32 bit applications normally get installed. On a 64 bit machine this would be something like "C:\Program Files (x86)", whereas for 32 bit machines this would match globalApplicationsDirectory and be something like "C:\Program Files".
|
windowsLocalAppData | On a Windows machine returns the LOCALAPPDATA% folder. |
Used in file searching, to specify whether to return files, directories, or both.
|
default |
Creates an (invalid) file object.
The file is initially set to an empty path, so getFullPathName() will return an empty string.
You can use its operator= method to point it at a proper file.
Referenced by getCurrentWorkingDirectory().
juce::File::File | ( | const String & | absolutePath | ) |
Creates a file from an absolute path.
If the path supplied is a relative path, it is taken to be relative to the current working directory (see File::getCurrentWorkingDirectory()), but this isn't a recommended way of creating a file, because you never know what the CWD is going to be.
On the Mac/Linux, the path can include "~" notation for referring to user home directories.
juce::File::File | ( | const File & | ) |
Creates a copy of another file object.
|
default |
Destructor.
|
noexcept |
Move constructor.
void juce::File::addToDock | ( | ) | const |
OSX ONLY - Adds this file to the OSX dock.
Adds a separator character to the end of a path if it doesn't already have one.
bool juce::File::appendData | ( | const void * | dataToAppend, |
size_t | numberOfBytes | ||
) | const |
Appends a block of binary data to the end of the file.
This will try to write the given buffer to the end of the file.
bool juce::File::appendText | ( | const String & | textToAppend, |
bool | asUnicode = false , |
||
bool | writeUnicodeHeaderBytes = false , |
||
const char * | lineEndings = "\r\n" |
||
) | const |
Appends a string to the end of the file.
This will try to append a text string to the file, as either 16-bit unicode or 8-bit characters in the default system encoding.
It can also write the 'ff fe' unicode header bytes before the text to indicate the endianness of the file.
If lineEndings is nullptr, then line endings in the text won't be modified. If you pass "\\n" or "\\r\\n" then this function will replace any existing line feeds.
|
static |
Indicates whether filenames are case-sensitive on the current operating system.
bool juce::File::containsSubDirectories | ( | ) | const |
Returns true if this file is a directory that contains one or more subdirectories.
Copies a directory.
Tries to copy an entire directory, recursively.
If this file isn't a directory or if any target files can't be created, this will return false.
newDirectory | the directory that this one should be copied to. Note that this is the name of the actual directory to create, not the directory into which the new one should be placed, so there must be enough write privileges to create it if it doesn't exist. Any files inside it will be overwritten by similarly named ones that are copied. |
Copies a file.
Tries to copy a file to a different location. If the target file already exists, this will attempt to delete it first, and will fail if this can't be done.
Referenced by moveInternal().
Result juce::File::create | ( | ) | const |
Creates an empty file if it doesn't already exist.
If the file that this object refers to doesn't exist, this will create a file of zero size.
If it already exists or is a directory, this method will do nothing.
If the parent directories of the File do not exist then this method will recursively create the parent directories.
Result juce::File::createDirectory | ( | ) | const |
Creates a new directory for this filename.
This will try to create the file as a directory, and will also create any parent directories it needs in order to complete the operation.
Creates a file that simply contains this string, without doing the sanity-checking that the normal constructors do.
Best to avoid this unless you really know what you're doing.
std::unique_ptr<FileInputStream> juce::File::createInputStream | ( | ) | const |
Creates a stream to read from this file.
Note that this is an old method, and actually it's usually best to avoid it and instead use an RAII pattern with an FileInputStream directly, e.g.
Returns a version of a filename with any illegal characters removed.
This will return a copy of the given string after removing characters that are not allowed in a legal filename, and possibly shortening the string if it's too long.
Because this will remove slashes, don't use it on an absolute pathname - use createLegalPathName() for that.
Returns a version of a path with any illegal characters removed.
Similar to createLegalFileName(), but this won't remove slashes, so can be used on a complete pathname.
std::unique_ptr<FileOutputStream> juce::File::createOutputStream | ( | size_t | bufferSize = 0x8000 | ) | const |
Creates a stream to write to this file.
Note that this is an old method, and actually it's usually best to avoid it and instead use an RAII pattern with an FileOutputStream directly, e.g.
If the file exists, the stream that is returned will be positioned ready for writing at the end of the file. If you want to write to the start of the file, replacing the existing content, then you can do the following:
Windows ONLY - Creates a win32 .LNK shortcut file that links to this file.
Tries to create a symbolic link and returns a boolean to indicate success.
|
static |
Create a symbolic link to a native path and return a boolean to indicate success.
Use this method if you want to create a link to a relative path or a special native file path (such as a device file on Windows).
Returns a temporary file in the system's temp directory.
This will try to return the name of a non-existent temp file. To get the temp folder, you can use getSpecialLocation (File::tempDirectory).
bool juce::File::deleteFile | ( | ) | const |
Deletes a file.
If this file is actually a directory, it may not be deleted correctly if it contains files. See deleteRecursively() as a better way of deleting directories.
If this file is a symlink, then the symlink will be deleted and not the target of the symlink.
References exists(), fullPath, isDirectory(), isSymbolicLink(), and juce::String::toUTF8().
Referenced by moveInternal().
Deletes a file or directory and all its subdirectories.
If this file is a directory, this will try to delete it and all its subfolders. If it's just a file, it will just try to delete the file.
followSymlinks | If true, then any symlink pointing to a directory will also recursively delete the contents of that directory |
Utility function to convert a file size in bytes to a neat string description.
So for example 100 would return "100 bytes", 2000 would return "2 KB", 2000000 would produce "2 MB", etc.
bool juce::File::exists | ( | ) | const |
Checks whether the file actually exists.
References juce::gl::access, fullPath, juce::String::isNotEmpty(), and juce::String::toUTF8().
Referenced by deleteFile(), existsAsFile(), hasWriteAccess(), and juce::FileOutputStream::openHandle().
bool juce::File::existsAsFile | ( | ) | const |
Checks whether the file exists and is a file rather than a directory.
References exists(), and isDirectory().
int juce::File::findChildFiles | ( | Array< File > & | results, |
int | whatToLookFor, | ||
bool | searchRecursively, | ||
const String & | wildCardPattern = "*" , |
||
FollowSymlinks | followSymlinks = FollowSymlinks::yes |
||
) | const |
Searches inside a directory for files matching a wildcard pattern.
Note that there's a newer, better version of this method which returns the results array, and in almost all cases, you should use that one instead! This one is kept around mainly for legacy code to use.
Array<File> juce::File::findChildFiles | ( | int | whatToLookFor, |
bool | searchRecursively, | ||
const String & | wildCardPattern = "*" , |
||
FollowSymlinks | followSymlinks = FollowSymlinks::yes |
||
) | const |
Searches this directory for files matching a wildcard pattern.
Assuming that this file is a directory, this method will search it for either files or subdirectories whose names match a filename pattern. Note that the order in which files are returned is completely undefined!
whatToLookFor | a value from the TypesOfFileToFind enum, specifying whether to return files, directories, or both. If the ignoreHiddenFiles flag is also added to this value, hidden files won't be returned |
searchRecursively | if true, all subdirectories will be recursed into to do an exhaustive search |
wildCardPattern | the filename pattern to search for, e.g. "*.txt" |
followSymlinks | the method that should be used to handle symbolic links |
Creates a set of files to represent each file root.
e.g. on Windows this will create files for "c:\", "d:\" etc according to which ones are available. On the Mac/Linux, this will probably just add a single entry for "/".
int64 juce::File::getBytesFreeOnVolume | ( | ) | const |
Returns the number of bytes free on the drive that this file lives on.
References juce::gl::buf, and juce::anonymous_namespace{juce_posix_SharedCode.h}::juce_doStatFS().
Returns a file that represents a relative (or absolute) sub-path of the current one.
This will find a child file or directory of the current object.
e.g. File ("/moose/fish").getChildFile ("foo.txt") will produce "/moose/fish/foo.txt". File ("/moose/fish").getChildFile ("haddock/foo.txt") will produce "/moose/fish/haddock/foo.txt". File ("/moose/fish").getChildFile ("../foo.txt") will produce "/moose/foo.txt".
If the string is actually an absolute path, it will be treated as such, e.g. File ("/moose/fish").getChildFile ("/foo.txt") will produce "/foo.txt"
Referenced by juce::juce_getExecutableFile().
|
static |
Returns the path to the container shared by all apps with the provided app group ID.
You must pass one of the app group IDs listed in your app's entitlements file.
On failure, this function may return a non-existent file, so you should check that the path exists and is writable before trying to use it.
Time juce::File::getCreationTime | ( | ) | const |
Returns the time that this file was created.
|
static |
Returns the current working directory.
References File(), and juce::HeapBlock< ElementType, throwOnFailure >::malloc().
Referenced by juce::ChildProcess::ActiveProcess::ActiveProcess(), and juce::juce_getExecutableFile().
String juce::File::getFileExtension | ( | ) | const |
Returns the file's extension.
Returns the file extension of this file, also including the dot.
e.g. "/moose/fish/foo.txt" would return ".txt"
uint64 juce::File::getFileIdentifier | ( | ) | const |
Returns a unique identifier for the file, if one is available.
Depending on the OS and file-system, this may be a unix inode number or a win32 file identifier, or 0 if it fails to find one. The number will be unique on the filesystem, but not globally.
References fullPath, and juce::anonymous_namespace{juce_posix_SharedCode.h}::juce_stat().
String juce::File::getFileName | ( | ) | const |
Returns the last section of the pathname.
Returns just the final part of the path - e.g. if the whole path is "/moose/fish/foo.txt" this will return "foo.txt".
For a directory, it returns the final part of the path - e.g. for the directory "/moose/fish" it'll return "fish".
If the filename begins with a dot, it'll return the whole filename, e.g. for "/moose/.fish", it'll return ".fish"
String juce::File::getFileNameWithoutExtension | ( | ) | const |
Returns the last part of the filename, without its file extension.
e.g. for "/moose/fish/foo.txt" this will return "foo".
References fullPath, and juce::anonymous_namespace{juce_posix_SharedCode.h}::juce_stat().
|
inlinenoexcept |
Returns the complete, absolute path of this file.
This includes the filename and all its parent folders. On Windows it'll also include the drive letter prefix; on Mac or Linux it'll be a complete path starting from the root folder.
If you just want the file's name, you should use getFileName() or getFileNameWithoutExtension().
Referenced by juce::File::NaturalFileComparator::compareElements(), juce::PluginHostType::getHostPath(), moveInternal(), juce::FileInputStream::openHandle(), juce::FileOutputStream::openHandle(), juce::MemoryMappedFile::openInternal(), setAsCurrentWorkingDirectory(), and juce::StandalonePluginHolder::setLastFile().
Time juce::File::getLastAccessTime | ( | ) | const |
Returns the last time this file was accessed.
Time juce::File::getLastModificationTime | ( | ) | const |
Returns the last modification time of this file.
File juce::File::getLinkedTarget | ( | ) | const |
If this file is a link or alias, this returns the file that it points to.
If the file isn't actually link, it'll just return itself.
OSType juce::File::getMacOSType | ( | ) | const |
OSX ONLY - Finds the OSType of a file from the its resources.
String juce::File::getNativeLinkedTarget | ( | ) | const |
This returns the native path that the symbolic link points to.
The returned path is a native path of the current OS and can be a relative, absolute or special path.
File juce::File::getNonexistentChildFile | ( | const String & | prefix, |
const String & | suffix, | ||
bool | putNumbersInBrackets = true |
||
) | const |
Chooses a filename relative to this one that doesn't already exist.
If this file is a directory, this will return a child file of this directory that doesn't exist, by adding numbers to a prefix and suffix until it finds one that isn't already there.
If the prefix + the suffix doesn't exist, it won't bother adding a number.
e.g. File ("/moose/fish").getNonexistentChildFile ("foo", ".txt", true) might return "/moose/fish/foo(2).txt" if there's already a file called "foo.txt".
prefix | the string to use for the filename before the number |
suffix | the string to add to the filename after the number |
putNumbersInBrackets | if true, this will create filenames in the format "prefix(number)suffix", if false, it will leave the brackets out. |
Chooses a filename for a sibling file to this one that doesn't already exist.
If this file doesn't exist, this will just return itself, otherwise it will return an appropriate sibling that doesn't exist, e.g. if a file "/moose/fish/foo.txt" exists, this might return "/moose/fish/foo(2).txt".
putNumbersInBrackets | whether to add brackets around the numbers that get appended to the new filename. |
int juce::File::getNumberOfChildFiles | ( | int | whatToLookFor, |
const String & | wildCardPattern = "*" |
||
) | const |
Searches inside a directory and counts how many files match a wildcard pattern.
Assuming that this file is a directory, this method will search it for either files or subdirectories whose names match a filename pattern, and will return the number of matches found.
This isn't a recursive call, and will only search this directory, not its children.
whatToLookFor | a value from the TypesOfFileToFind enum, specifying whether to count files, directories, or both. If the ignoreHiddenFiles flag is also added to this value, hidden files won't be counted |
wildCardPattern | the filename pattern to search for, e.g. "*.txt" |
File juce::File::getParentDirectory | ( | ) | const |
Returns the directory that contains this file or directory.
e.g. for "/moose/fish/foo.txt" this will return "/moose/fish".
If you are already at the root directory ("/" or "C:") then this method will return the root directory.
Referenced by hasWriteAccess().
|
private |
Creates a relative path that refers to a file relatively to a given directory.
e.g. File ("/moose/foo.txt").getRelativePathFrom (File ("/moose/fish/haddock")) would return "../../foo.txt".
If it's not possible to navigate from one file to the other, an absolute path is returned. If the paths are invalid, an empty string may also be returned.
directoryToBeRelativeTo | the directory which the resultant string will be relative to. If this is actually a file rather than a directory, its parent directory will be used instead. If it doesn't exist, it's assumed to be a directory. |
|
static |
The system-specific file separator character.
On Windows, this will be '\', on Mac/Linux, it'll be '/'
Referenced by juce::ChildProcess::ActiveProcess::ActiveProcess(), and hasWriteAccess().
|
static |
The system-specific file separator character, as a string.
On Windows, this will be '\', on Mac/Linux, it'll be '/'
Returns a file which is in the same directory as this one.
This is equivalent to getParentDirectory().getChildFile (name).
int64 juce::File::getSize | ( | ) | const |
Returns the size of the file in bytes.
References fullPath, and juce::anonymous_namespace{juce_posix_SharedCode.h}::juce_stat().
|
static |
Finds the location of a special type of file or directory, such as a home folder or documents folder.
Referenced by juce::PluginHostType::getHostPath(), and juce::StandalonePluginHolder::getLastFile().
String juce::File::getVersion | ( | ) | const |
If possible, this will try to create a version string for the given file.
The OS may be able to look at the file and give a version for it - e.g. with executables, bundles, dlls, etc. If no version is available, this will return an empty string.
String juce::File::getVolumeLabel | ( | ) | const |
Finds the name of the drive on which this file lives.
References juce::gl::f, juce::String::fromUTF8(), juce::gl::length, and juce::zerostruct().
int juce::File::getVolumeSerialNumber | ( | ) | const |
Returns the serial number of the volume on which this file lives.
int64 juce::File::getVolumeTotalSize | ( | ) | const |
Returns the total size of the drive that contains this file.
References juce::gl::buf, and juce::anonymous_namespace{juce_posix_SharedCode.h}::juce_doStatFS().
Checks whether the file has a given extension.
extensionToTest | the extension to look for - it doesn't matter whether or not this string has a dot at the start, so ".wav" and "wav" will have the same effect. To compare with multiple extensions, this parameter can contain multiple strings, separated by semi-colons - so, for example: hasFileExtension (".jpeg;png;gif") would return true if the file has any of those three extensions. |
int juce::File::hashCode | ( | ) | const |
Returns a 32-bit hash-code that identifies this file.
This is based on the filename. Obviously it's possible, although unlikely, that two files will have the same hash-code.
int64 juce::File::hashCode64 | ( | ) | const |
Returns a 64-bit hash-code that identifies this file.
This is based on the filename. Obviously it's possible, although unlikely, that two files will have the same hash-code.
Attempts to scan the contents of this file and compare it to another file, returning true if this is possible and they match byte-for-byte.
bool juce::File::hasWriteAccess | ( | ) | const |
Checks whether a file can be created or written to.
References juce::gl::access, juce::String::containsChar(), exists(), fullPath, getParentDirectory(), getSeparatorChar(), juce::hasEffectiveRootFilePermissions(), hasWriteAccess(), isDirectory(), and juce::String::toUTF8().
Referenced by hasWriteAccess(), and moveInternal().
Returns true if the string seems to be a fully-specified absolute path.
Checks whether a file is somewhere inside a directory.
Returns true if this file is somewhere inside a subdirectory of the directory that is passed in. Neither file actually has to exist, because the function just checks the paths for similarities.
e.g. File ("/moose/fish/foo.txt").isAChildOf ("/moose") is true. File ("/moose/fish/foo.txt").isAChildOf ("/moose/fish") is also true.
bool juce::File::isBundle | ( | ) | const |
OSX ONLY - Returns true if this file is actually a bundle.
bool juce::File::isDirectory | ( | ) | const |
Checks whether the file is a directory that exists.
References fullPath, juce::String::isNotEmpty(), and juce::anonymous_namespace{juce_posix_SharedCode.h}::juce_stat().
Referenced by juce::File::NaturalFileComparator::compareElements(), deleteFile(), existsAsFile(), and hasWriteAccess().
bool juce::File::isHidden | ( | ) | const |
Returns true if this file is a hidden or system file.
The criteria for deciding whether a file is hidden are platform-dependent.
bool juce::File::isOnCDRomDrive | ( | ) | const |
Returns true if this file is on a CD or DVD drive.
bool juce::File::isOnHardDisk | ( | ) | const |
Returns true if this file is on a hard disk.
This will fail if it's a network drive, but will still be true for removable hard-disks.
bool juce::File::isOnRemovableDrive | ( | ) | const |
Returns true if this file is on a removable disk drive.
This might be a usb-drive, a CD-rom, or maybe a network drive.
bool juce::File::isRoot | ( | ) | const |
Checks whether the path of this file represents the root of a file system, irrespective of its existence.
This will return true for "C:", "D:", etc on Windows and "/" on other platforms.
bool juce::File::isShortcut | ( | ) | const |
Windows ONLY - Returns true if this is a win32 .LNK file.
bool juce::File::isSymbolicLink | ( | ) | const |
Returns true if this file is a link or alias that can be followed using getLinkedTarget().
Referenced by deleteFile().
bool juce::File::loadFileAsData | ( | MemoryBlock & | result | ) | const |
Loads a file's contents into memory as a block of binary data.
Of course, trying to load a very large file into memory will blow up, so it's better to check first.
result | the data block to which the file's contents should be appended - note that if the memory block might already contain some data, you might want to clear it first |
Referenced by juce::StandalonePluginHolder::askUserToLoadState().
String juce::File::loadFileAsString | ( | ) | const |
Reads a file into memory as a string.
Attempts to load the entire file as a zero-terminated string.
This makes use of InputStream::readEntireStreamAsString, which can read either UTF-16 or UTF-8 file formats.
Moves or renames a file.
Tries to move a file to a different location. If the target file already exists, this will attempt to delete it first, and will fail if this can't be done.
Note that the destination file isn't the directory to put it in, it's the actual filename that you want the new file to have.
Also note that on some OSes (e.g. Windows), moving files between different volumes may not be possible.
References copyInternal(), deleteFile(), fullPath, getFullPathName(), hasWriteAccess(), and juce::String::toUTF8().
Referenced by replaceInternal().
bool juce::File::moveToTrash | ( | ) | const |
Moves this file or folder to the trash.
Sets the file based on an absolute pathname.
If the path supplied is a relative path, it is taken to be relative to the current working directory (see File::getCurrentWorkingDirectory()), but this isn't a recommended way of creating a file, because you never know what the CWD is going to be.
On the Mac/Linux, the path can include "~" notation for referring to user home directories.
void juce::File::readLines | ( | StringArray & | destLines | ) | const |
Reads the contents of this file as text and splits it into lines, which are appended to the given StringArray.
Referenced by juce::readPosixConfigFileValue().
Replaces a file.
Replace the file in the given location, assuming the replaced files identity. Depending on the file system this will preserve file attributes such as creation date, short file name, etc.
If replacement succeeds the original file is deleted.
References moveInternal().
bool juce::File::replaceWithData | ( | const void * | dataToWrite, |
size_t | numberOfBytes | ||
) | const |
Replaces this file's contents with a given block of data.
This will delete the file and replace it with the given data.
A nice feature of this method is that it's safe - instead of deleting the file first and then re-writing it, it creates a new temporary file, writes the data to that, and then moves the new file to replace the existing file. This means that if the power gets pulled out or something crashes, you're a lot less likely to end up with a corrupted or unfinished file..
Returns true if the operation succeeds, or false if it fails.
Referenced by juce::StandalonePluginHolder::askUserToSaveState().
bool juce::File::replaceWithText | ( | const String & | textToWrite, |
bool | asUnicode = false , |
||
bool | writeUnicodeHeaderBytes = false , |
||
const char * | lineEndings = "\r\n" |
||
) | const |
Replaces this file's contents with a given text string.
This will delete the file and replace it with the given text.
A nice feature of this method is that it's safe - instead of deleting the file first and then re-writing it, it creates a new temporary file, writes the text to that, and then moves the new file to replace the existing file. This means that if the power gets pulled out or something crashes, you're a lot less likely to end up with an empty file..
For an explanation of the parameters here, see the appendText() method.
Returns true if the operation succeeds, or false if it fails.
void juce::File::revealToUser | ( | ) | const |
Opens Finder, Explorer, or whatever the OS uses, to show the user this file's location.
bool juce::File::setAsCurrentWorkingDirectory | ( | ) | const |
Sets the current working directory to be this file.
For this to work the file must point to a valid directory.
References getFullPathName().
Changes the creation date for this file.
newTime | the time to apply to the file |
Changes the execute-permissions of a file.
shouldBeExecutable | whether to add or remove execute-permission |
References fullPath, and juce::setFileModeFlags().
References fullPath, and juce::setFileModeFlags().
Changes the last-access time for this file.
newTime | the time to apply to the file |
Changes the modification time for this file.
newTime | the time to apply to the file |
Changes the write-permission of a file or directory.
shouldBeReadOnly | whether to add or remove write-permission |
applyRecursively | if the file is a directory and this is true, it will recurse through all the subfolders changing the permissions of all files |
Launches the file as a process.
Returns a version of this file with a different file extension.
e.g. File ("/moose/fish/foo.txt").withFileExtension ("html") returns "/moose/fish/foo.html"
newExtension | the new extension, either with or without a dot at the start (this doesn't make any difference). To get remove a file's extension altogether, pass an empty string into this function. |
|
private |