Skip to content

Commit 2d5976c

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

File tree

3 files changed

+38
-0
lines changed

3 files changed

+38
-0
lines changed

+stdlib/file_size.m

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