MCPcopy Create free account
hub / github.com/ReadyTalk/avian / Java_java_io_File_length

Function Java_java_io_File_length

classpath/java-io.cpp:294–346  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

292}
293
294extern "C" JNIEXPORT jlong JNICALL
295 Java_java_io_File_length(JNIEnv* e, jclass, jstring path)
296{
297#ifdef PLATFORM_WINDOWS
298 // Option: without opening file
299 // http://msdn.microsoft.com/en-us/library/windows/desktop/aa364946(v=vs.85).aspx
300 string_t chars = getChars(e, path);
301 if (chars) {
302 LARGE_INTEGER fileSize;
303#if !defined(WINAPI_FAMILY) || WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
304 HANDLE file = CreateFileW(
305 chars, FILE_READ_DATA, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0);
306#else
307 HANDLE file = CreateFile2(
308 chars, GENERIC_READ, FILE_SHARE_READ, OPEN_EXISTING, nullptr);
309#endif
310 releaseChars(e, path, chars);
311 if (file == INVALID_HANDLE_VALUE)
312 return 0;
313#if !defined(WINAPI_FAMILY) || WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
314 if (!GetFileSizeEx(file, &fileSize)) {
315 CloseHandle(file);
316 return 0;
317 }
318#else
319 FILE_STANDARD_INFO info;
320 if (!GetFileInformationByHandleEx(
321 file, FileStandardInfo, &info, sizeof(info))) {
322 CloseHandle(file);
323 return 0;
324 }
325 fileSize = info.EndOfFile;
326#endif
327
328 CloseHandle(file);
329 return static_cast<jlong>(fileSize.QuadPart);
330 }
331#else
332
333 string_t chars = getChars(e, path);
334 if (chars) {
335 STRUCT_STAT s;
336 int r = STAT(chars, &s);
337 releaseChars(e, path, chars);
338 if (r == 0) {
339 return s.st_size;
340 }
341 }
342
343#endif
344
345 return 0;
346}
347
348extern "C" JNIEXPORT void JNICALL
349 Java_java_io_File_mkdir(JNIEnv* e, jclass, jstring path)

Callers

nothing calls this directly

Calls 3

getCharsFunction · 0.85
releaseCharsFunction · 0.85
STATClass · 0.85

Tested by

no test coverage detected