Commit 91d472acfcb2d46280c78c9ff3e5d8c7e7d82de3
1 parent
41e2f5ab
added file_size function and a function utility directory
Showing
2 changed files
with
33 additions
and
18 deletions
Show diff stats
stim/envi/envi.h
@@ -7,6 +7,7 @@ | @@ -7,6 +7,7 @@ | ||
7 | #include "../envi/bil.h" | 7 | #include "../envi/bil.h" |
8 | #include "../math/fd_coefficients.h" | 8 | #include "../math/fd_coefficients.h" |
9 | #include <stim/parser/filename.h> | 9 | #include <stim/parser/filename.h> |
10 | +#include <stim/util/filesize.h> | ||
10 | #include <iostream> | 11 | #include <iostream> |
11 | #include <fstream> | 12 | #include <fstream> |
12 | //#include "../image/image.h" | 13 | //#include "../image/image.h" |
@@ -83,22 +84,8 @@ public: | @@ -83,22 +84,8 @@ public: | ||
83 | return true; | 84 | return true; |
84 | } | 85 | } |
85 | 86 | ||
86 | - static size_t file_size(std::string filename){ | ||
87 | - FILE *p_file = NULL; | ||
88 | - p_file = fopen(filename.c_str(),"rb"); | ||
89 | - if(!p_file){ | ||
90 | - std::cout<<"ERROR: could not open "<<filename<<std::endl; | ||
91 | - exit(1); | ||
92 | - } | ||
93 | - fseek(p_file,0,SEEK_END); | ||
94 | - size_t size = ftell(p_file); | ||
95 | - fclose(p_file); | ||
96 | - return size; | ||
97 | - } | ||
98 | - | ||
99 | //test to determine if the specified file is an ENVI file | 87 | //test to determine if the specified file is an ENVI file |
100 | static bool is_envi(std::string fname, std::string hname = ""){ | 88 | static bool is_envi(std::string fname, std::string hname = ""){ |
101 | - return true; | ||
102 | stim::filename data_file(fname); | 89 | stim::filename data_file(fname); |
103 | stim::filename header_file; | 90 | stim::filename header_file; |
104 | if(hname == ""){ //if the header isn't provided | 91 | if(hname == ""){ //if the header isn't provided |
@@ -111,10 +98,7 @@ public: | @@ -111,10 +98,7 @@ public: | ||
111 | if(H.load(header_file) == false) //load the header file, if it doesn't load return false | 98 | if(H.load(header_file) == false) //load the header file, if it doesn't load return false |
112 | return false; | 99 | return false; |
113 | size_t targetBytes = H.data_bytes(); //get the number of bytes that SHOULD be in the data file | 100 | size_t targetBytes = H.data_bytes(); //get the number of bytes that SHOULD be in the data file |
114 | - //std::ifstream infile(data_file.str(), std::ifstream::binary); //load the data file | ||
115 | - //if(!infile) return false; //if the data file doesn't load, return false | ||
116 | - //size_t bytes = infile.tellg(); //get the number of actual bytes in the file | ||
117 | - size_t bytes = file_size(fname); | 101 | + size_t bytes = stim::file_size(fname); |
118 | if(bytes != targetBytes) return false; //if the data doesn't match the header, return false | 102 | if(bytes != targetBytes) return false; //if the data doesn't match the header, return false |
119 | return true; //otherwise everything looks fine | 103 | return true; //otherwise everything looks fine |
120 | 104 |
1 | +#ifndef STIM_UTIL_FILESIZE_H | ||
2 | +#define STIM_UTIL_FILESIZE_H | ||
3 | + | ||
4 | +#ifdef _WIN32 | ||
5 | +#include <Windows.h> | ||
6 | +#endif | ||
7 | + | ||
8 | +namespace stim{ | ||
9 | +static size_t file_size(std::string filename){ | ||
10 | +#ifdef _WIN32 | ||
11 | + HANDLE hFile = CreateFile(filename.c_str(), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); | ||
12 | + if(hFile == INVALID_HANDLE_VALUE) return 0; | ||
13 | + LARGE_INTEGER size; | ||
14 | + if(!GetFileSizeEx(hFile, &size)){ | ||
15 | + CloseHandle(hFile); | ||
16 | + return 0; | ||
17 | + } | ||
18 | + CloseHandle(hFile); | ||
19 | + return (size_t)size.QuadPart; | ||
20 | +#elif | ||
21 | + | ||
22 | + | ||
23 | + | ||
24 | +#endif | ||
25 | +} | ||
26 | + | ||
27 | +} //end namespace stim | ||
28 | + | ||
29 | + | ||
30 | + | ||
31 | +#endif | ||
0 | \ No newline at end of file | 32 | \ No newline at end of file |