Path: blob/master/test/jdk/sun/misc/EscapePath.java
41145 views
/*1* Copyright (c) 2000, Oracle and/or its affiliates. All rights reserved.2* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.3*4* This code is free software; you can redistribute it and/or modify it5* under the terms of the GNU General Public License version 2 only, as6* published by the Free Software Foundation.7*8* This code is distributed in the hope that it will be useful, but WITHOUT9* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or10* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License11* version 2 for more details (a copy is included in the LICENSE file that12* accompanied this code).13*14* You should have received a copy of the GNU General Public License version15* 2 along with this work; if not, write to the Free Software Foundation,16* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.17*18* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA19* or visit www.oracle.com if you need additional information or have any20* questions.21*/2223/*24/* @test25* @bug 435912326* @summary Test loading of classes with # in the path27*/28import java.io.*;2930public class EscapePath {3132private static String testPath;3334static {35testPath = System.getProperty("test.src");36if (testPath == null)37testPath = "";38else39testPath = testPath + File.separator;40}4142public static void main(String[] args) throws Exception {43createTestDir();44copyClassFile();45invokeJava();46eraseTestDir();47}4849private static void createTestDir() throws Exception {50File testDir = new File("a#b");51boolean result = testDir.mkdir();52}5354private static void eraseTestDir() throws Exception {55File classFile = new File("a#b/Hello.class");56classFile.delete();57File testDir = new File("a#b");58testDir.delete();59}6061private static void copyClassFile() throws Exception {62FileInputStream fis = new FileInputStream(testPath + "Hello.class");63FileOutputStream fos = new FileOutputStream("a#b/Hello.class");6465int bytesRead;66byte buf[] = new byte[410];67do {68bytesRead = fis.read(buf);69if (bytesRead > 0)70fos.write(buf, 0, bytesRead);71} while (bytesRead != -1);72fis.close();73fos.flush();74fos.close();75}7677private static void invokeJava() throws Exception {78String command = System.getProperty("java.home") +79File.separator + "bin" + File.separator +80"java -classpath " + "a#b/ Hello";81Process p = Runtime.getRuntime().exec(command);82p.waitFor();83int result = p.exitValue();84if (result != 0)85throw new RuntimeException("Path encoding failure.");86}87}888990