1e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera/* 2e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * Copyright (c) 2007, 2009, Oracle and/or its affiliates. All rights reserved. 3e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * 5e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * This code is free software; you can redistribute it and/or modify it 6e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * under the terms of the GNU General Public License version 2 only, as 7e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * published by the Free Software Foundation. Oracle designates this 8e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * particular file as subject to the "Classpath" exception as provided 9e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * by Oracle in the LICENSE file that accompanied this code. 10e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * 11e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * This code is distributed in the hope that it will be useful, but WITHOUT 12e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * version 2 for more details (a copy is included in the LICENSE file that 15e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * accompanied this code). 16e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * 17e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * You should have received a copy of the GNU General Public License version 18e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * 2 along with this work; if not, write to the Free Software Foundation, 19e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * 21e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * or visit www.oracle.com if you need additional information or have any 23e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * questions. 24e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera */ 25e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera 26e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmerapackage java.nio.file; 27e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera 28e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmeraimport java.io.IOException; 29e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera 30e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera/** 31e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * Thrown when a file system operation fails on one or two files. This class is 32e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * the general class for file system exceptions. 33e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * 34e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * @since 1.7 35e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera */ 36e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera 37e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmerapublic class FileSystemException 38e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera extends IOException 39e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera{ 40e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera static final long serialVersionUID = -3055425747967319812L; 41e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera 42e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera private final String file; 43e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera private final String other; 44e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera 45e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera /** 46e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * Constructs an instance of this class. This constructor should be used 47e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * when an operation involving one file fails and there isn't any additional 48e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * information to explain the reason. 49e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * 50e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * @param file 51e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * a string identifying the file or {@code null} if not known. 52e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera */ 53e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera public FileSystemException(String file) { 54e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera super((String)null); 55e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera this.file = file; 56e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera this.other = null; 57e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera } 58e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera 59e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera /** 60e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * Constructs an instance of this class. This constructor should be used 61e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * when an operation involving two files fails, or there is additional 62e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * information to explain the reason. 63e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * 64e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * @param file 65e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * a string identifying the file or {@code null} if not known. 66e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * @param other 67e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * a string identifying the other file or {@code null} if there 68e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * isn't another file or if not known 69e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * @param reason 70e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * a reason message with additional information or {@code null} 71e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera */ 72e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera public FileSystemException(String file, String other, String reason) { 73e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera super(reason); 74e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera this.file = file; 75e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera this.other = other; 76e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera } 77e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera 78e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera /** 79e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * Returns the file used to create this exception. 80e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * 81e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * @return the file (can be {@code null}) 82e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera */ 83e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera public String getFile() { 84e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera return file; 85e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera } 86e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera 87e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera /** 88e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * Returns the other file used to create this exception. 89e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * 90e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * @return the other file (can be {@code null}) 91e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera */ 92e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera public String getOtherFile() { 93e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera return other; 94e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera } 95e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera 96e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera /** 97e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * Returns the string explaining why the file system operation failed. 98e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * 99e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * @return the string explaining why the file system operation failed 100e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera */ 101e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera public String getReason() { 102e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera return super.getMessage(); 103e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera } 104e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera 105e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera /** 106e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * Returns the detail message string. 107e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera */ 108e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera @Override 109e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera public String getMessage() { 110e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera if (file == null && other == null) 111e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera return getReason(); 112e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera StringBuilder sb = new StringBuilder(); 113e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera if (file != null) 114e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera sb.append(file); 115e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera if (other != null) { 116e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera sb.append(" -> "); 117e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera sb.append(other); 118e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera } 119e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera if (getReason() != null) { 120e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera sb.append(": "); 121e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera sb.append(getReason()); 122e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera } 123e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera return sb.toString(); 124e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera } 125e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera} 126