Belgi
Belgi

Reputation: 15052

Creating a new file in the script folder using fopen

I'm using MATLAB R2017a and I would like to create a new binary file within the folder the script is running from.

I am running matlab as administrator since otherwise it has no permissions to create a file. The following returns a legal fileID:

fileID = fopen('mat.bin','w');

but the file is created in c:\windows\system32.

I then tried the following to create the file within the folder I have the script in:

filePath=fullfile(mfilename('fullpath'), 'mat.bin');
fileID = fopen(filePath,'w');

but I'm getting an invalid fileId (equals to -1).

the variable filePath is equal in runtime to

'D:\Dropbox\Studies\CurrentSemester\ImageProcessing\Matlab Exercies\Chapter1\Ex4\mat.bin'

which seems valid to me.

I'd appreciate help figuring out what to do

Upvotes: 1

Views: 94

Answers (1)

Luis Mendo
Luis Mendo

Reputation: 112659

The problem is that mfilename returns the path including the file name (without the extension). From the documentation,

p = mfilename('fullpath') returns the full path and name of the file in which the call occurs, not including the filename extension.

To keep the path to the folder only, use fileparts, whose first output is precisely that. So, in your code, you should use

filePath = fullfile(fileparts(mfilename('fullpath')), 'mat.bin'); 

Upvotes: 3

Related Questions