56 :
fullPath (std::move (other.fullPath))
62 fullPath = std::move (other.fullPath);
79 bool anythingChanged =
false;
81 for (
int i = 1;
i < toks.
size(); ++
i)
85 if (
t ==
".." && toks[
i - 1] !=
"..")
87 anythingChanged =
true;
93 anythingChanged =
true;
107 auto normalisedPath = path;
110 String doubleSeparator (separator + separator);
112 auto uncPath = normalisedPath.startsWith (doubleSeparator)
113 && ! normalisedPath.fromFirstOccurrenceOf (doubleSeparator,
false,
false).startsWith (separator);
116 normalisedPath = normalisedPath.fromFirstOccurrenceOf (doubleSeparator,
false,
false);
118 while (normalisedPath.contains (doubleSeparator))
119 normalisedPath = normalisedPath.replace (doubleSeparator, separator);
121 return uncPath ? doubleSeparator + normalisedPath
155 else if (! path.containsChar (
':'))
174 jassert ((!
p.containsChar (
'\\')) || (
p.indexOfChar (
'/') >= 0 &&
p.indexOfChar (
'/') <
p.indexOfChar (
'\\')));
178 if (path.startsWithChar (
'~'))
189 auto userName = path.substring (1).upToFirstOccurrenceOf (
"/",
false,
false);
191 if (
auto* pw = getpwnam (userName.toUTF8()))
197 #if JUCE_DEBUG || JUCE_LOG_ASSERTIONS
198 if (! (path.startsWith (
"./") || path.startsWith (
"../")))
209 #if JUCE_LOG_ASSERTIONS
220 path = path.dropLastCharacters (1);
232#if JUCE_LINUX || JUCE_BSD
233 #define NAMES_ARE_CASE_SENSITIVE 1
238 #if NAMES_ARE_CASE_SENSITIVE
247 #if NAMES_ARE_CASE_SENSITIVE
248 return name1.compare (name2);
250 return name1.compareIgnoreCase (name2);
261 const bool applyRecursively)
const
267 worked =
f.setReadOnly (shouldBeReadOnly,
true) && worked;
283 worked =
f.deleteRecursively (followSymlinks) && worked;
296 #if ! NAMES_ARE_CASE_SENSITIVE
297 if (*
this != newFile)
307 return (*
this == newFile)
335 if (!
f.copyDirectoryTo (newDirectory.
getChildFile (
f.getFileName())))
350 return fullPath.substring (0, lastSlash);
372 auto lastDot =
fullPath.lastIndexOfChar (
'.');
374 if (lastDot > lastSlash)
375 return fullPath.substring (lastSlash, lastDot);
377 return fullPath.substring (lastSlash);
402 auto firstChar = *(path.
text);
406 || (firstChar != 0 && path.
text[1] ==
':');
414 auto r = relativePath.
text;
430 auto secondChar = *++
r;
432 if (secondChar ==
'.')
434 auto thirdChar = *++
r;
436 if (thirdChar == separatorChar || thirdChar == 0)
438 auto lastSlash = path.lastIndexOfChar (separatorChar);
441 path = path.substring (0, lastSlash);
443 while (*
r == separatorChar)
452 else if (secondChar == separatorChar || secondChar == 0)
454 while (*
r == separatorChar)
465 path.appendCharPointer (
r);
480 if (bytes == 1) { suffix =
" byte"; }
481 else if (bytes < 1024) { suffix =
" bytes"; }
482 else if (bytes < 1024 * 1024) { suffix =
" KB"; divisor = 1024.0; }
483 else if (bytes < 1024 * 1024 * 1024) { suffix =
" MB"; divisor = 1024.0 * 1024.0; }
484 else { suffix =
" GB"; divisor = 1024.0 * 1024.0 * 1024.0; }
486 return (divisor > 0 ?
String ((
double) bytes / divisor, 1) :
String (bytes)) + suffix;
497 if (parentDir == *
this)
500 auto r = parentDir.createDirectory();
518 if (parentDir == *
this)
521 auto r = parentDir.createDirectory();
545 return in.openedOk() &&
getSize() == (
int64)
in.readIntoMemoryBlock (destBlock);
554 return in.openedOk() ?
in.readEntireStreamAsString()
567 findChildFiles (results, whatToLookFor, searchRecursively, wildcard, followSymlinks);
575 for (
const auto& di :
RangedDirectoryIterator (*
this, searchRecursively, wildcard, whatToLookFor, followSymlinks))
577 results.
add (di.getFile());
603 bool putNumbersInBrackets)
const
610 auto prefix = suggestedPrefix;
613 if (prefix.trim().endsWithChar (
')'))
615 putNumbersInBrackets =
true;
617 auto openBracks = prefix.lastIndexOfChar (
'(');
618 auto closeBracks = prefix.lastIndexOfChar (
')');
621 && closeBracks > openBracks
622 && prefix.substring (openBracks + 1, closeBracks).containsOnly (
"0123456789"))
624 number = prefix.substring (openBracks + 1, closeBracks).getIntValue();
625 prefix = prefix.substring (0, openBracks);
631 auto newName = prefix;
633 if (putNumbersInBrackets)
635 newName <<
'(' << ++number <<
')';
647 }
while (
f.exists());
660 putNumbersInBrackets);
666 auto indexOfDot =
fullPath.lastIndexOfChar (
'.');
669 return fullPath.substring (indexOfDot);
685 if (
fullPath.endsWithIgnoreCase (possibleSuffix))
687 if (possibleSuffix.
text[0] ==
'.')
706 auto lastDot = filePart.lastIndexOfChar (
'.');
709 filePart = filePart.substring (0, lastDot);
726 auto fin = std::make_unique<FileInputStream> (*
this);
736 auto fout = std::make_unique<FileOutputStream> (*
this, bufferSize);
738 if (fout->openedOk())
746 const size_t numberOfBytes)
const
748 jassert (((ssize_t) numberOfBytes) >= 0);
750 if (numberOfBytes == 0)
754 return fout.
openedOk() && fout.
write (dataToAppend, numberOfBytes);
758 const size_t numberOfBytes)
const
760 if (numberOfBytes == 0)
775 return fout.
writeText (
text, asUnicode, writeHeaderBytes, lineFeed);
781 tempFile.
getFile().
appendText (textToWrite, asUnicode, writeHeaderBytes, lineFeed);
794 if (in1.openedOk() && in2.
openedOk())
796 const int bufferSize = 4096;
801 auto num1 = in1.read (buffer1, bufferSize);
802 auto num2 = in2.
read (buffer2, bufferSize);
810 if (memcmp (buffer1, buffer2, (
size_t) num1) != 0)
825 if (
s.isNotEmpty() &&
s[1] ==
':')
827 start =
s.substring (0, 2);
831 return start +
s.removeCharacters (
"\"#@,;:<>*^|?")
832 .substring (0, 1024);
839 const int maxLength = 128;
840 auto len =
s.length();
844 auto lastDot =
s.lastIndexOfChar (
'.');
846 if (lastDot >
jmax (0, len - 12))
848 s =
s.substring (0, maxLength - (len - lastDot))
849 +
s.substring (lastDot);
853 s =
s.substring (0, maxLength);
867 auto c =
s.getAndAdvance();
887 thisPath = thisPath.dropLastCharacters (1);
892 int commonBitLength = 0;
893 auto thisPathAfterCommon = thisPath.getCharPointer();
894 auto dirPathAfterCommon = dirPath.getCharPointer();
897 auto thisPathIter = thisPath.getCharPointer();
898 auto dirPathIter = dirPath.getCharPointer();
902 auto c1 = thisPathIter.getAndAdvance();
903 auto c2 = dirPathIter.getAndAdvance();
905 #if NAMES_ARE_CASE_SENSITIVE
917 thisPathAfterCommon = thisPathIter;
918 dirPathAfterCommon = dirPathIter;
925 if (commonBitLength == 0 || (commonBitLength == 1 && thisPath[1] ==
getSeparatorChar()))
930 if (numUpDirectoriesNeeded == 0)
931 return thisPathAfterCommon;
938 s.appendCharPointer (thisPathAfterCommon);
947 .withFileExtension (fileNameEnding);
949 if (tempFile.exists())
956 const String& nativePathOfTarget,
957 bool overwriteExisting)
959 if (linkFileToCreate.
exists())
969 if (overwriteExisting)
973 #if JUCE_MAC || JUCE_LINUX
1011#if JUCE_ALLOW_STATIC_NULL_VARIABLES
1048 void runTest()
override
1050 beginTest (
"Reading");
1055 expect (!
File().exists());
1056 expect (!
File().existsAsFile());
1057 expect (!
File().isDirectory());
1059 expect (
File(
"/").isDirectory());
1061 expect (home.isDirectory());
1062 expect (home.exists());
1063 expect (! home.existsAsFile());
1068 expect (home.getVolumeTotalSize() > 1024 * 1024);
1069 expect (home.getBytesFreeOnVolume() > 0);
1070 expect (! home.isHidden());
1071 expect (home.isOnHardDisk());
1072 expect (! home.isOnCDRomDrive());
1074 expect (home.setAsCurrentWorkingDirectory());
1077 auto homeParent = home;
1078 bool noSymlinks =
true;
1080 while (! homeParent.isRoot())
1082 if (homeParent.isSymbolicLink())
1088 homeParent = homeParent.getParentDirectory();
1097 File::findFileSystemRoots (roots);
1098 expect (roots.
size() > 0);
1100 int numRootsExisting = 0;
1101 for (
int i = 0;
i < roots.
size(); ++
i)
1106 expect (numRootsExisting > 0);
1109 beginTest (
"Writing");
1111 auto random = getRandom();
1112 const auto tempFolderName =
"JUCE UnitTests Temp Folder "
1115 File demoFolder (temp.getChildFile (tempFolderName));
1116 expect (demoFolder.deleteRecursively());
1117 expect (demoFolder.createDirectory());
1118 expect (demoFolder.isDirectory());
1119 expect (demoFolder.getParentDirectory() == temp);
1120 expect (temp.isDirectory());
1124 File tempFile (demoFolder.getNonexistentChildFile (
"test",
".txt",
false));
1126 expect (tempFile.getFileExtension() ==
".txt");
1127 expect (tempFile.hasFileExtension (
".txt"));
1128 expect (tempFile.hasFileExtension (
"txt"));
1129 expect (tempFile.withFileExtension (
"xyz").hasFileExtension (
".xyz"));
1130 expect (tempFile.withFileExtension (
"xyz").hasFileExtension (
"abc;xyz;foo"));
1131 expect (tempFile.withFileExtension (
"xyz").hasFileExtension (
"xyz;foo"));
1132 expect (! tempFile.withFileExtension (
"h").hasFileExtension (
"bar;foo;xx"));
1133 expect (tempFile.getSiblingFile (
"foo").isAChildOf (temp));
1134 expect (tempFile.hasWriteAccess());
1136 expect (home.getChildFile (
".") == home);
1137 expect (home.getChildFile (
"..") == home.getParentDirectory());
1138 expect (home.getChildFile (
".xyz").getFileName() ==
".xyz");
1139 expect (home.getChildFile (
"..xyz").getFileName() ==
"..xyz");
1140 expect (home.getChildFile (
"...xyz").getFileName() ==
"...xyz");
1141 expect (home.getChildFile (
"./xyz") == home.getChildFile (
"xyz"));
1142 expect (home.getChildFile (
"././xyz") == home.getChildFile (
"xyz"));
1143 expect (home.getChildFile (
"../xyz") == home.getParentDirectory().getChildFile (
"xyz"));
1144 expect (home.getChildFile (
".././xyz") == home.getParentDirectory().getChildFile (
"xyz"));
1145 expect (home.getChildFile (
".././xyz/./abc") == home.getParentDirectory().getChildFile (
"xyz/abc"));
1146 expect (home.getChildFile (
"./../xyz") == home.getParentDirectory().getChildFile (
"xyz"));
1147 expect (home.getChildFile (
"a1/a2/a3/./../../a4") == home.getChildFile (
"a1/a4"));
1149 expect (! File().hasReadAccess());
1150 expect (! File().hasWriteAccess());
1152 expect (! tempFile.hasReadAccess());
1155 FileOutputStream fo (tempFile);
1156 fo.write (
"0123456789", 10);
1159 expect (tempFile.hasReadAccess());
1161 expect (tempFile.exists());
1162 expect (tempFile.getSize() == 10);
1163 expect (std::abs ((
int) (tempFile.getLastModificationTime().toMilliseconds() - Time::getCurrentTime().toMilliseconds())) < 3000);
1164 expectEquals (tempFile.loadFileAsString(), String (
"0123456789"));
1165 expect (! demoFolder.containsSubDirectories());
1167 expectEquals (tempFile.getRelativePathFrom (demoFolder.getParentDirectory()), demoFolder.getFileName() + File::getSeparatorString() + tempFile.getFileName());
1168 expectEquals (demoFolder.getParentDirectory().getRelativePathFrom (tempFile),
".." + File::getSeparatorString() +
".." + File::getSeparatorString() + demoFolder.getParentDirectory().getFileName());
1173 demoFolder.getNonexistentChildFile (
"tempFolder",
"",
false).createDirectory();
1176 expect (demoFolder.containsSubDirectories());
1178 expect (tempFile.hasWriteAccess());
1179 tempFile.setReadOnly (
true);
1180 expect (! tempFile.hasWriteAccess());
1181 tempFile.setReadOnly (
false);
1182 expect (tempFile.hasWriteAccess());
1184 Time t (Time::getCurrentTime());
1185 tempFile.setLastModificationTime (
t);
1186 Time t2 = tempFile.getLastModificationTime();
1187 expect (std::abs ((
int) (t2.toMilliseconds() -
t.toMilliseconds())) <= 1000);
1191 tempFile.loadFileAsData (mb);
1193 expect (mb[0] ==
'0');
1197 expect (tempFile.getSize() == 10);
1198 FileOutputStream fo (tempFile);
1199 expect (fo.openedOk());
1201 expect (fo.setPosition (7));
1202 expect (fo.truncate().wasOk());
1203 expect (tempFile.getSize() == 7);
1204 fo.write (
"789", 3);
1206 expect (tempFile.getSize() == 10);
1209 beginTest (
"Memory-mapped files");
1212 MemoryMappedFile mmf (tempFile, MemoryMappedFile::readOnly);
1213 expect (mmf.getSize() == 10);
1214 expect (mmf.getData() !=
nullptr);
1215 expect (memcmp (mmf.getData(),
"0123456789", 10) == 0);
1219 const File tempFile2 (tempFile.getNonexistentSibling (
false));
1220 expect (tempFile2.create());
1221 expect (tempFile2.appendData (
"xxxxxxxxxx", 10));
1224 MemoryMappedFile mmf (tempFile2, MemoryMappedFile::readWrite);
1225 expect (mmf.getSize() == 10);
1226 expect (mmf.getData() !=
nullptr);
1227 memcpy (mmf.getData(),
"abcdefghij", 10);
1231 MemoryMappedFile mmf (tempFile2, MemoryMappedFile::readWrite);
1232 expect (mmf.getSize() == 10);
1233 expect (mmf.getData() !=
nullptr);
1234 expect (memcmp (mmf.getData(),
"abcdefghij", 10) == 0);
1237 expect (tempFile2.deleteFile());
1240 beginTest (
"More writing");
1242 expect (tempFile.appendData (
"abcdefghij", 10));
1243 expect (tempFile.getSize() == 20);
1244 expect (tempFile.replaceWithData (
"abcdefghij", 10));
1245 expect (tempFile.getSize() == 10);
1247 File tempFile2 (tempFile.getNonexistentSibling (
false));
1248 expect (tempFile.copyFileTo (tempFile2));
1249 expect (tempFile2.exists());
1250 expect (tempFile2.hasIdenticalContentTo (tempFile));
1251 expect (tempFile.deleteFile());
1252 expect (! tempFile.exists());
1253 expect (tempFile2.moveFileTo (tempFile));
1254 expect (tempFile.exists());
1255 expect (! tempFile2.exists());
1257 expect (demoFolder.deleteRecursively());
1258 expect (! demoFolder.exists());
1261 URL url (
"https://audio.dev/foo/bar/");
1262 expectEquals (url.toString (
false), String (
"https://audio.dev/foo/bar/"));
1263 expectEquals (url.getChildURL (
"x").toString (
false), String (
"https://audio.dev/foo/bar/x"));
1264 expectEquals (url.getParentURL().toString (
false), String (
"https://audio.dev/foo"));
1265 expectEquals (url.getParentURL().getParentURL().toString (
false), String (
"https://audio.dev/"));
1266 expectEquals (url.getParentURL().getParentURL().getParentURL().toString (
false), String (
"https://audio.dev/"));
1267 expectEquals (url.getParentURL().getChildURL (
"x").toString (
false), String (
"https://audio.dev/foo/x"));
1268 expectEquals (url.getParentURL().getParentURL().getParentURL().getChildURL (
"x").toString (
false), String (
"https://audio.dev/x"));
1272 URL url (
"https://audio.dev/foo/bar");
1273 expectEquals (url.toString (
false), String (
"https://audio.dev/foo/bar"));
1274 expectEquals (url.getChildURL (
"x").toString (
false), String (
"https://audio.dev/foo/bar/x"));
1275 expectEquals (url.getParentURL().toString (
false), String (
"https://audio.dev/foo"));
1276 expectEquals (url.getParentURL().getParentURL().toString (
false), String (
"https://audio.dev/"));
1277 expectEquals (url.getParentURL().getParentURL().getParentURL().toString (
false), String (
"https://audio.dev/"));
1278 expectEquals (url.getParentURL().getChildURL (
"x").toString (
false), String (
"https://audio.dev/foo/x"));
1279 expectEquals (url.getParentURL().getParentURL().getParentURL().getChildURL (
"x").toString (
false), String (
"https://audio.dev/x"));
1284static FileTests fileUnitTests;
Type jmax(const Type a, const Type b)
Definition MathsFunctions.h:48
#define noexcept
Definition DistrhoDefines.h:72
uint8_t a
Definition Spc_Cpu.h:141
int size() const noexcept
Definition Array.h:187
bool hasFileExtension(StringRef extensionToTest) const
Definition File.cpp:690
bool hasIdenticalContentTo(const File &other) const
Definition File.cpp:795
bool copyDirectoryTo(const File &newDirectory) const
Definition File.cpp:314
int64 getLastAccessTime() const
Definition File.cpp:541
File & operator=(const String &newAbsolutePath)
Definition File.cpp:77
File withFileExtension(StringRef newExtension) const
Definition File.cpp:715
static File createFileWithoutCheckingPath(const String &absolutePath) noexcept
Definition File.cpp:65
static File getCurrentWorkingDirectory()
Definition File.cpp:1395
static File createTempFile(StringRef fileNameEnding)
Definition File.cpp:953
int64 getCreationTime() const
Definition File.cpp:548
bool moveFileTo(const File &targetLocation) const
Definition File.cpp:276
uint getNumberOfChildFiles(int whatToLookFor, const String &wildCardPattern="*") const
Definition File.cpp:597
String getFileExtension() const
Definition File.cpp:680
String getRelativePathFrom(const File &directoryToBeRelativeTo) const
Definition File.cpp:892
int64 getLastModificationTime() const
Definition File.cpp:534
String getPathUpToLastSlash() const
Definition File.cpp:352
File() noexcept
Definition File.cpp:55
bool operator<(const File &) const
Definition File.cpp:256
bool replaceWithData(const void *dataToWrite, size_t numberOfBytes) const
Definition File.cpp:764
static String parseAbsolutePath(const String &)
Definition File.cpp:138
static bool isAbsolutePath(StringRef path)
Definition File.cpp:406
@ findDirectories
Definition File.h:461
@ findFiles
Definition File.h:462
@ findFilesAndDirectories
Definition File.h:463
static String createLegalFileName(const String &fileNameToFix)
Definition File.cpp:848
FileInputStream * createInputStream() const
Definition File.cpp:733
File getNonexistentSibling(bool putNumbersInBrackets=true) const
Definition File.cpp:669
bool deleteRecursively() const
Definition File.cpp:260
bool isAChildOf(const File &potentialParentDirectory) const
Definition File.cpp:389
bool appendText(const String &textToAppend, bool asUnicode=false, bool writeUnicodeHeaderBytes=false) const
Definition File.cpp:775
@ currentExecutableFile
Definition File.h:649
@ userHomeDirectory
Definition File.h:635
@ tempDirectory
Definition File.h:640
static String addTrailingSeparator(const String &path)
Definition File.cpp:225
void readLines(StringArray &destLines) const
Definition File.cpp:575
Result create() const
Definition File.cpp:494
bool loadFileAsData(MemoryBlock &result) const
Definition File.cpp:556
Result createDirectory() const
Definition File.cpp:515
File getChildFile(StringRef relativeOrAbsolutePath) const
Definition File.cpp:418
bool replaceWithText(const String &textToWrite, bool asUnicode=false, bool writeUnicodeHeaderBytes=false) const
Definition File.cpp:786
String getFileNameWithoutExtension() const
Definition File.cpp:378
bool containsSubDirectories() const
Definition File.cpp:607
bool replaceFileIn(const File &targetLocation) const
Definition File.cpp:299
bool createSymbolicLink(const File &linkFileToCreate, bool overwriteExisting) const
Definition File.cpp:965
File getLinkedTarget() const
Definition File.cpp:1610
static bool areFileNamesCaseSensitive()
Definition File.cpp:236
bool operator>(const File &) const
Definition File.cpp:257
bool operator==(const File &) const
Definition File.cpp:254
FileOutputStream * createOutputStream(size_t bufferSize=0x8000) const
Definition File.cpp:743
String getFileName() const
Definition File.cpp:373
bool operator!=(const File &) const
Definition File.cpp:255
bool copyFileTo(const File &targetLocation) const
Definition File.cpp:293
static String descriptionOfSizeInBytes(int64 bytes)
Definition File.cpp:479
File getSiblingFile(StringRef siblingFileName) const
Definition File.cpp:473
String loadFileAsString() const
Definition File.cpp:565
static String createLegalPathName(const String &pathNameToFix)
Definition File.cpp:833
File getParentDirectory() const
Definition File.cpp:365
bool appendData(const void *dataToAppend, size_t numberOfBytes) const
Definition File.cpp:752
static File getSpecialLocation(const SpecialLocationType type)
Definition File.cpp:1642
File getNonexistentChildFile(const String &prefix, const String &suffix, bool putNumbersInBrackets=true) const
Definition File.cpp:617
uint findChildFiles(std::vector< File > &results, int whatToLookFor, bool searchRecursively, const String &wildCardPattern="*") const
Definition File.cpp:581
size_t getSize() const noexcept
Definition MemoryBlock.h:102
static Result ok() noexcept
Definition Result.h:68
static Result fail(const std::string &errorMessage) noexcept
Definition Result.cpp:58
static String toHexString(int number)
Definition String.cpp:1830
static String repeatedString(StringRef stringToRepeat, int numberOfTimesToRepeat)
Definition String.cpp:1028
Definition juce_Array.h:56
void add(const ElementType &newElement)
Definition juce_Array.h:418
static juce_wchar toLowerCase(juce_wchar character) noexcept
Definition juce_CharacterFunctions.cpp:33
static bool isDigit(char character) noexcept
Definition juce_CharacterFunctions.cpp:69
Definition juce_RangedDirectoryIterator.h:36
Definition juce_File.h:45
bool isSymbolicLink() const
Definition juce_linux_CommonFile.cpp:58
bool moveFileTo(const File &targetLocation) const
Definition juce_File.cpp:288
bool copyInternal(const File &) const
Definition juce_linux_CommonFile.cpp:26
int64 hashCode64() const
Definition juce_File.cpp:397
bool isDirectory() const
Definition juce_posix_SharedCode.h:238
Array< File > findChildFiles(int whatToLookFor, bool searchRecursively, const String &wildCardPattern="*", FollowSymlinks followSymlinks=FollowSymlinks::yes) const
Definition juce_File.cpp:564
static StringRef getSeparatorString()
Definition juce_posix_SharedCode.h:114
static String addTrailingSeparator(const String &path)
Definition juce_File.cpp:225
String getFileExtension() const
Definition juce_File.cpp:664
bool existsAsFile() const
Definition juce_posix_SharedCode.h:252
int64 getSize() const
Definition juce_posix_SharedCode.h:257
String fullPath
Definition juce_File.h:1147
const String & getFullPathName() const noexcept
Definition juce_File.h:153
String getFileName() const
Definition juce_File.cpp:364
bool setLastAccessTime(Time newTime) const
Definition juce_File.cpp:535
File getChildFile(StringRef relativeOrAbsolutePath) const
Definition juce_File.cpp:412
String getPathUpToLastSlash() const
Definition juce_File.cpp:345
static bool isAbsolutePath(StringRef path)
Definition juce_File.cpp:400
File getSiblingFile(StringRef siblingFileName) const
Definition juce_File.cpp:469
bool createSymbolicLink(const File &linkFileToCreate, bool overwriteExisting) const
Definition juce_File.cpp:995
static String parseAbsolutePath(const String &)
Definition juce_File.cpp:130
String getFileNameWithoutExtension() const
Definition juce_File.cpp:369
@ tempDirectory
Definition juce_File.h:913
@ userHomeDirectory
Definition juce_File.h:863
bool replaceInternal(const File &) const
Definition juce_posix_SharedCode.h:420
bool appendText(const String &textToAppend, bool asUnicode=false, bool writeUnicodeHeaderBytes=false, const char *lineEndings="\r\n") const
Definition juce_File.cpp:768
int hashCode() const
Definition juce_File.cpp:396
@ findDirectories
Definition juce_File.h:559
@ findFilesAndDirectories
Definition juce_File.h:561
@ findFiles
Definition juce_File.h:560
bool setCreationTime(Time newTime) const
Definition juce_File.cpp:536
bool setReadOnly(bool shouldBeReadOnly, bool applyRecursively=false) const
Definition juce_File.cpp:260
static File createTempFile(StringRef fileNameEnding)
Definition juce_File.cpp:943
static File JUCE_CALLTYPE getSpecialLocation(const SpecialLocationType type)
Definition juce_linux_Files.cpp:107
FollowSymlinks
Definition juce_File.h:566
bool moveInternal(const File &) const
Definition juce_posix_SharedCode.h:404
bool isRoot() const
Definition juce_File.cpp:125
void getFileTimesInternal(int64 &m, int64 &a, int64 &c) const
Definition juce_posix_SharedCode.h:325
bool setFileReadOnlyInternal(bool) const
Definition juce_posix_SharedCode.h:314
String loadFileAsString() const
Definition juce_File.cpp:548
File getParentDirectory() const
Definition juce_File.cpp:358
bool appendData(const void *dataToAppend, size_t numberOfBytes) const
Definition juce_File.cpp:745
bool setExecutePermission(bool shouldBeExecutable) const
Definition juce_File.cpp:272
bool setFileExecutableInternal(bool) const
Definition juce_posix_SharedCode.h:320
bool setFileTimesInternal(int64 m, int64 a, int64 c) const
Definition juce_posix_SharedCode.h:351
static juce_wchar getSeparatorChar()
Definition juce_posix_SharedCode.h:113
bool deleteFile() const
Definition juce_posix_SharedCode.h:390
static File createFileWithoutCheckingPath(const String &absolutePath) noexcept
Definition juce_File.cpp:31
bool startAsProcess(const String ¶meters=String()) const
Definition juce_File.cpp:718
String getNativeLinkedTarget() const
Definition juce_linux_CommonFile.cpp:63
bool hasFileExtension(StringRef extensionToTest) const
Definition juce_File.cpp:674
bool exists() const
Definition juce_posix_SharedCode.h:246
bool setLastModificationTime(Time newTime) const
Definition juce_File.cpp:534
Result createDirectory() const
Definition juce_File.cpp:511
Result createDirectoryInternal(const String &) const
Definition juce_posix_SharedCode.h:425
Definition juce_FileOutputStream.h:35
const Result & getStatus() const noexcept
Definition juce_FileOutputStream.h:81
bool write(const void *, size_t) override
Definition juce_FileOutputStream.cpp:76
bool failedToOpen() const noexcept
Definition juce_FileOutputStream.h:86
bool openedOk() const noexcept
Definition juce_FileOutputStream.h:91
Definition juce_HeapBlock.h:87
static void JUCE_CALLTYPE writeToLog(const String &message)
Definition juce_Logger.cpp:40
Definition juce_MemoryBlock.h:33
void openInternal(const File &, AccessMode, bool)
Definition juce_posix_SharedCode.h:560
MemoryMappedFile(const File &file, AccessMode mode, bool exclusive=false)
Definition juce_File.cpp:1024
size_t getSize() const noexcept
Definition juce_MemoryMappedFile.h:94
Range< int64 > range
Definition juce_MemoryMappedFile.h:102
AccessMode
Definition juce_MemoryMappedFile.h:37
virtual bool writeText(const String &text, bool asUTF16, bool writeUTF16ByteOrderMark, const char *lineEndings)
Definition juce_OutputStream.cpp:198
static bool JUCE_CALLTYPE openDocument(const String &documentURL, const String ¶meters)
Definition juce_linux_Files.cpp:200
static Random & getSystemRandom() noexcept
Definition juce_Random.cpp:67
Definition juce_Range.h:40
Definition juce_RangedDirectoryIterator.h:100
Definition juce_Result.h:57
Definition juce_StringArray.h:35
String joinIntoString(StringRef separatorString, int startIndex=0, int numberOfElements=-1) const
Definition juce_StringArray.cpp:289
int size() const noexcept
Definition juce_StringArray.h:136
int addLines(StringRef stringToBreakUp)
Definition juce_StringArray.cpp:358
void removeRange(int startIndex, int numberToRemove)
Definition juce_StringArray.cpp:244
void remove(int index)
Definition juce_StringArray.cpp:223
int addTokens(StringRef stringToTokenise, bool preserveQuotedStrings)
Definition juce_StringArray.cpp:329
Definition juce_String.h:53
int length() const noexcept
Definition juce_String.cpp:511
bool endsWithChar(juce_wchar character) const noexcept
Definition juce_String.cpp:1410
bool isEmpty() const noexcept
Definition juce_String.h:310
const char * toRawUTF8() const
Definition juce_String.cpp:2074
String removeCharacters(StringRef charactersToRemove) const
Definition juce_String.cpp:1757
bool contains(StringRef text) const noexcept
Definition juce_String.cpp:1035
String trimEnd() const
Definition juce_String.cpp:1687
static String toHexString(IntegerType number)
Definition juce_String.h:1097
const wchar_t * toWideCharPointer() const
Definition juce_String.cpp:2079
String substring(int startIndex, int endIndex) const
Definition juce_String.cpp:1498
Definition juce_StringRef.h:62
bool isNotEmpty() const noexcept
Definition juce_StringRef.h:103
int length() const noexcept
Definition juce_StringRef.h:105
String::CharPointerType text
Definition juce_StringRef.h:130
bool isEmpty() const noexcept
Definition juce_StringRef.h:101
Definition juce_TemporaryFile.h:65
@ useHiddenFile
Definition juce_TemporaryFile.h:70
bool overwriteTargetFileWithTemporary() const
Definition juce_TemporaryFile.cpp:93
const File & getFile() const noexcept
Definition juce_TemporaryFile.h:126
Definition juce_Time.h:37
Definition juce_UnitTest.h:70
File getChildFile(StringRef relativeOrAbsolutePath) const
Definition File.cpp:418
const String & getFullPathName() const noexcept
Definition File.h:152
String substring(int startIndex, int endIndex) const
Definition String.cpp:1373
unsigned * m
Definition inflate.c:1559
struct huft * t
Definition inflate.c:943
register unsigned i
Definition inflate.c:1575
unsigned s
Definition inflate.c:1555
unsigned f
Definition inflate.c:1572
static void c2(register WDL_FFT_COMPLEX *a)
Definition fft.c:270
virtual ASIOError start()=0
#define JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE(...)
Definition juce_CompilerWarnings.h:181
#define JUCE_END_IGNORE_WARNINGS_GCC_LIKE
Definition juce_CompilerWarnings.h:182
#define JUCE_BEGIN_IGNORE_WARNINGS_MSVC(warnings)
Definition juce_CompilerWarnings.h:198
#define JUCE_END_IGNORE_WARNINGS_MSVC
Definition juce_CompilerWarnings.h:199
float in
Definition lilv_test.c:1460
static char ** files
Definition misc.c:28
Definition juce_UnitTestCategories.h:27
Definition carla_juce.cpp:31
static String normaliseSeparators(const String &path)
Definition juce_File.cpp:105
constexpr Type jmax(Type a, Type b)
Definition juce_MathsFunctions.h:94
long long int64
Definition juce_MathsFunctions.h:54
wchar_t juce_wchar
Definition juce_CharacterFunctions.h:42
void ignoreUnused(Types &&...) noexcept
Definition juce_MathsFunctions.h:333
static int countNumberOfSeparators(String::CharPointerType s)
Definition juce_File.cpp:861
static int compareFilenames(const String &name1, const String &name2) noexcept
Definition juce_File.cpp:245
@ exclusive
Definition juce_audio_devices.h:176
static String removeEllipsis(const String &path)
Definition juce_File.cpp:67
@ Time
Definition LadspaBase.h:49
bool exists(const char *path)
Definition ysfx_utils.cpp:498
png_structrp int mode
Definition png.h:1139
const char * text
Definition swell-functions.h:167
uch * p
Definition crypt.c:594
return c
Definition crypt.c:175
memcpy(hh, h, RAND_HEAD_LEN)
int r
Definition crypt.c:458
#define FALSE
Definition unzpriv.h:1298
struct zdirent * file
Definition win32.c:1500
#define const
Definition zconf.h:137