Implements the native method 'open0'.
68 {
69#if FIRST_PASS
70 throw new NotImplementedException();
71#else
72 if (
JVM.Vfs.IsPath(name))
73 {
74 var fd = RandomAccessFileAccessor.GetFd(self);
75 if (fd == null)
76 throw new global::java.io.IOException("Invalid file handle.");
77
78 try
79 {
80 var fileMode = (FileMode)0;
81 if ((mode & O_RDONLY) == O_RDONLY)
82 fileMode |= FileMode.Open;
83 if ((mode & O_RDWR) == O_RDWR)
84 fileMode |= FileMode.OpenOrCreate;
85
86 var fileAccess = (FileAccess)0;
87 if ((mode & O_RDONLY) == O_RDONLY)
88 fileAccess |= FileAccess.Read;
89 if ((mode & O_RDWR) == O_RDWR)
90 fileAccess |= FileAccess.ReadWrite;
91
92 FileDescriptorAccessor.SetPtr(fd, -1);
93 FileDescriptorAccessor.SetStream(fd,
JVM.Vfs.Open(name, fileMode, fileAccess));
94 return;
95 }
96 catch (ObjectDisposedException e)
97 {
98 throw new global::java.io.IOException(e.Message);
99 }
100 catch (ArgumentException e)
101 {
102 throw new global::java.io.FileNotFoundException(e.Message);
103 }
104 catch (SecurityException e)
105 {
106 throw new global::java.lang.SecurityException(e.Message);
107 }
108 catch (UnauthorizedAccessException)
109 {
110 throw new global::java.io.FileNotFoundException(name + " (Access is denied)");
111 }
112 catch (IOException e)
113 {
114 throw new global::java.io.FileNotFoundException(e.Message);
115 }
116 catch (NotSupportedException e)
117 {
118 throw new global::java.io.FileNotFoundException(e.Message);
119 }
120 }
121 else
122 {
123 __callerID ??= global::ikvm.@internal.CallerID.create(typeof(global::java.io.RandomAccessFile).TypeHandle);
124 __jniPtr__open0 ??= Marshal.GetDelegateForFunctionPointer<__jniDelegate__open0>(
JNIFrame.
GetFuncPtr(__callerID,
"java/io/RandomAccessFile", nameof(
open0),
"(Ljava/lang/String;I)V"));
126 var jniEnv = jniFrm.Enter(__callerID);
127 try
128 {
129 __jniPtr__open0(jniEnv, jniFrm.MakeLocalRef(self), jniFrm.MakeLocalRef(name), mode);
130 }
131 catch (Exception ex)
132 {
133 System.Console.WriteLine(
"*** exception in native code ***");
134 System.Console.WriteLine(ex);
135 throw;
136 }
137 finally
138 {
139 jniFrm.Leave();
140 }
141 }
142#endif
143 }
static void open0(object self, string name, int mode)
Implements the native method 'open0'.
Main state of the running JVM.