askvity

How to check if a file exists in MATLAB?

Published in MATLAB File System 4 mins read

To check if a file exists in MATLAB, you can use functions like exist, isfile, or isfolder.

Knowing whether a file or folder exists is a common task when scripting in MATLAB, essential for conditional logic, data processing, and ensuring your code runs smoothly without errors. MATLAB provides several built-in functions designed specifically for this purpose, each with slightly different capabilities and recommended use cases.

Using the exist Function

The exist function is a versatile tool in MATLAB that can check for the existence of various entities, including variables, functions, and files. When checking for a file, you specify the name of the file and the type 'file'.

  • exist('filename', 'file') returns:
    • 2 if filename is a file.
    • 7 if filename is a folder.
    • 0 if filename does not exist, or exists but is a different type.

It's a powerful function, but be mindful of its limitations, especially in certain contexts like code generation.

Using isfile and isfolder

For clarity and specific checks, especially when dealing with files and folders, the isfile and isfolder functions are often preferred.

  • isfile('filepath') returns true (1) if the input is a file, and false (0) otherwise.
  • isfolder('folderpath') returns true (1) if the input is a folder, and false (0) otherwise.

These functions provide a clear boolean output, making your code easy to read and understand.

Important Note from Reference:

  • To check the existence of a file or folder in standalone code generation, use the isfolder and isfile functions. If you call exist by using a function handle, code generation does not support the "var" search type.

This means that when you are preparing your MATLAB code for deployment as standalone applications (using MATLAB Coderâ„¢ or Embedded Coderâ„¢), relying on isfile and isfolder is the recommended or required approach for checking file or folder existence. Using exist with the 'file' type might also work in many code generation scenarios, but the reference specifically highlights the preference for isfile and isfolder and notes a limitation of exist (using a function handle with type 'var').

Choosing the Right Function

The best function depends on your specific needs and the context of your code:

  • Use exist('filename', 'file') for general script use when you might also need to check for other entity types (like variables or functions) with the same function call or are comfortable with its return values.
  • Use isfile('filepath') and isfolder('folderpath') for clearer boolean checks specifically for files or folders, and especially when writing code for standalone code generation.

Practical Examples

Here are simple ways to use these functions:

Using exist:

fileName = 'mydata.txt';
if exist(fileName, 'file') == 2
    disp(['The file "', fileName, '" exists.']);
else
    disp(['The file "', fileName, '" does not exist.']);
end

Using isfile:

fileName = 'mydata.txt';
if isfile(fileName)
    disp(['The file "', fileName, '" exists.']);
else
    disp(['The file "', fileName, '" does not exist.']);
end

Using isfolder:

folderName = 'myproject';
if isfolder(folderName)
    disp(['The folder "', folderName, '" exists.']);
else
    disp(['The folder "', folderName, '" does not exist.']);
end

Comparison Table

Function Checks For Return Value Recommended for Code Generation? Notes
exist File, Folder, Var, etc. Numeric (0, 2, 7, etc.) Use with caution Versatile but has code generation limitations
isfile File only Boolean (true/false) Yes Clear, specific, and preferred for code generation
isfolder Folder only Boolean (true/false) Yes Clear, specific, and preferred for code generation

By using these functions correctly, you can build robust MATLAB applications that gracefully handle the presence or absence of files and folders.

Related Articles