Skip to content

Commit ce7ca9b

Browse files
committed
add file_size()
1 parent 123fcba commit ce7ca9b

File tree

3 files changed

+40
-0
lines changed

3 files changed

+40
-0
lines changed

+stdlib/file_size.m

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
% FILE_SIZE size in bytes of file
2+
3+
function s = file_size(p, use_java)
4+
arguments
5+
p (1,1) string {mustBeFile}
6+
use_java (1,1) logical = false
7+
end
8+
9+
if use_java
10+
% several percent slower than native Matlab
11+
s = java.io.File(p).length;
12+
else
13+
s = dir(p);
14+
if isempty(s)
15+
s = [];
16+
else
17+
s = s.bytes;
18+
end
19+
end
20+
21+
22+
end

example/bench_file_size.m

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
%% benchmark for file_size()
2+
3+
f = mfilename("fullpath") + ".m";
4+
5+
fno = @() stdlib.file_size(f, false);
6+
fjava = @() stdlib.file_size(f, true);
7+
8+
t_no = timeit(fno);
9+
t_java = timeit(fjava);
10+
11+
disp("No Java: " + t_no + " s")
12+
disp("Java: " + t_java + " s")
13+
14+
disp("Java is " + t_no/t_java + " times faster")

test/TestFileImpure.m

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,10 @@ function test_exists(tc, p_exists)
5555
tc.verifyEqual(stdlib.exists(p_exists{1}), p_exists{2})
5656
end
5757

58+
function test_file_size(tc)
59+
tc.verifyGreaterThan(stdlib.file_size(mfilename("fullpath") + ".m"), 0)
60+
end
61+
5862

5963
function test_is_readable(tc, p_exists)
6064
tc.verifyEqual(stdlib.is_readable(p_exists{1}), p_exists{2})

0 commit comments

Comments
 (0)