Validate path syntax, type, and extension
ispathvalid & mustBeValidPath: Validate path syntax, type, and extension
The typical use case is to check paths at the start of a script/function before saving/exporting, with human readable feedback if validation fails.
Syntax
tf = isvalidpath( inputPath ) checks if the platform can parse the path inputPath. Unlike isfolder and isfile, it does not verify that the path exists in the file system.
tf = isvalidpath( inputPath, pathType ) also checks that the location of inputPath is either a file or directory.
tf = isvalidpath( inputPath, "file", validExtensions ) also checks that inputPath contains a file extension from a provided set, validExtensions.
[ tf, Log ] = isvalidpath( __ ) additionally returns formatted log messages. Log.warning explains why a path is not valid. Log.info provides formatting tips. Use the disp function to print the log to the command window.
mustBeValidPath( inputPath, pathType, validExtensions ) function identically to isvalidpath but throws an error if the path format is not valid. pathType and validExtensions are optional.
Inputs
| Argument | Description |
|---|---|
inputPath |
Path to validate.
|
pathType |
Valid location type of inputPath. Either:
|
validExtensions |
Specifies which file extensions are valid if the input is a file path. Each entry must be either:
|
Outputs
| Argument | Description |
|---|---|
tf |
Whether the path valid or not according to the above options. Logical scalar. |
Log |
Formatted log messages. Struct scalar with the fields:
Log will be "", i.e., a zero length string. Use the disp function to print the messages to the command window, e.g., disp( Log.warning ). |
Example
load( "spine.mat", "X" )
X = X / max( X, [], "all" );
outputFile = "output\xray.jpg";
validExts = ["" ".mat" "image"];
[ isSave, Log ] = isvalidpath( outputFile, "file", validExts );
if isSave
[ filePath, ~, fileExt ] = fileparts( outputFile );
if ~isfolder( filePath )
[ status, msg ] = mkdir( filePath );
assert( status == 1, ...
"Could not make output directory:\n -\t%s", msg )
end
try
if strcmp( fileExt, "" ) || strcmp( fileExt, ".mat" )
save( outputFile, "X" )
else
imwrite( X, outputFile )
end
fprintf( "Saved patient scan to '%s'.\n", outputFile )
catch ME
warning( ME.identifier, ...
"Patient scan not saved:\n -\t%s", ME.message )
end
else
warning( "Patient scan not saved. " + ...
"outputFile is not a valid.\n\n%s\n", Log.warning )
endNotes
Created in 2022b. Compatible with MATLAB release 2019b and later. Compatible with all platforms.
Published under MIT License (see LICENSE.txt).
Please cite George Abrahams (GitHub, LinkedIn, Google Scholar).
Zitieren als
George Abrahams (https://www.linkedin.com/in/georgeabrahams) 2023. Validate path syntax, type, and extension (https://github.com/WD40andTape/validatepath), GitHub.
Kompatibilität der MATLAB-Version
Plattform-Kompatibilität
Windows macOS LinuxTags
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!Live Editor erkunden
Erstellen Sie Skripte mit Code, Ausgabe und formatiertem Text in einem einzigen ausführbaren Dokument.
tests
| Version | Veröffentlicht | Versionshinweise | |
|---|---|---|---|
| 1.0.0 |
