Sub SetDOSAttribute(aFile As String, attribute As String, setTo As Boolean) As Boolean
If File.Exists(File.GetFileParent(aFile),File.GetName(aFile)) = False Then
Log($"File ${aFile} does not exist"$)
Return False
End If
Dim retVal As Boolean = True
Dim fileAttr As String
Select attribute.ToLowerCase
Case "h"
fileAttr = "dos:hidden"
Case "r"
fileAttr = "dos:readonly"
Case "s"
fileAttr = "dos:system"
Case "a"
fileAttr = "dos:archive"
Case Else
retVal = False
End Select
If retVal = True Then
Dim nativeMe As JavaObject
nativeMe = Me
nativeMe.RunMethod("setDOSFileAttribute", Array(aFile, fileAttr, setTo))
'Pure JavaObject -> could not get it to work
'Dim jo As JavaObject
'Dim aURI As JavaObject
'Dim aPath As JavaObject
'aURI = jo.InitializeStatic("java.net.URI").RunMethod("create",Array(File.GetUri(File.GetFileParent(aFile),File.GetName(aFile))))
'aPath = jo.InitializeStatic("java.nio.file.Paths").RunMethod("get", Array(aURI))
'Dim aEnum As JavaObject
'aEnum = jo.InitializeStatic("java.nio.file.LinkOption").RunMethod("valueOf",Array("NOFOLLOW_LINKS"))
'Never could get the below to match
'jo.InitializeStatic("java.nio.file.Files").RunMethod("setAttribute", Array(aPath, fileAttr, setTo, aEnum))
End If
Return retVal
End Sub
#If JAVA
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
//Note: Remove the word static when used in a class module
public static void setDOSFileAttribute(String aFile, String attribute, boolean flag) throws IOException {
Path aPath = Paths.get(aFile);
Files.setAttribute(aPath, attribute, flag);
}
#End If