/* * Copyright (C)2009 - SSHJ Contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.schmizz.sshj.sftp; import java.util.Set; public enum OpenMode { /** Open the file for reading. */ READ(0x00000001), /** * Open the file for writing. If both this and {@link OpenMode#READ} are specified, the file is opened for both * reading and writing. */ WRITE(0x00000002), /** Force all writes to append data at the end of the file. */ APPEND(0x00000004), /** * If this flag is specified, then a new file will be created if one does not already exist (if {@link * OpenMode#TRUNC} is specified, the new file will be truncated to zero length if it previously exists). */ CREAT(0x00000008), /** * Forces an existing file with the same name to be truncated to zero length when creating a file by specifying * {@link OpenMode#CREAT}. {@link OpenMode#CREAT} MUST also be specified if this flag is used. */ TRUNC(0x00000010), /** * Causes the request to fail if the named file already exists. {@link OpenMode#CREAT} MUST also be specified if * this flag is used. */ EXCL(0x00000020); private final int pflag; private OpenMode(int pflag) { this.pflag = pflag; } public static int toMask(Set<OpenMode> modes) { int mask = 0; for (OpenMode m : modes) mask |= m.pflag; return mask; } }