001/* 002 * This file is part of the Jikes RVM project (http://jikesrvm.org). 003 * 004 * This file is licensed to You under the Eclipse Public License (EPL); 005 * You may not use this file except in compliance with the License. You 006 * may obtain a copy of the License at 007 * 008 * http://www.opensource.org/licenses/eclipse-1.0.php 009 * 010 * See the COPYRIGHT.txt file distributed with this work for information 011 * regarding copyright ownership. 012 */ 013package org.jikesrvm.util; 014 015public class StringUtilities { 016 017 /** 018 * Convert a <code>String</code> filename to a byte array using the 019 * deprecated ascii String method for cases where passing it through 020 * a character set converter is too heavyweight. Allocates an 021 * additional null-terminator byte so that the resulting byte array 022 * can be passed to native C functions. 023 * 024 * @param fileName File name 025 * @return Byte-array representation 026 */ 027 @SuppressWarnings("deprecation") 028 public static byte[] stringToBytesNullTerminated(String fileName) { 029 byte[] asciiName = new byte[fileName.length() + 1]; // +1 for \0 terminator 030 fileName.getBytes(0, fileName.length(), asciiName, 0); 031 return asciiName; 032 } 033 034 /** 035 * Convert a <code>String</code> filename to a byte array using the 036 * deprecated ascii String method for cases where passing it through 037 * a character set converter is too heavyweight. 038 * 039 * @param fileName File name 040 * @return Byte-array representation 041 */ 042 @SuppressWarnings("deprecation") 043 public static byte[] stringToBytes(String fileName) { 044 byte[] asciiName = new byte[fileName.length()]; 045 fileName.getBytes(0, fileName.length(), asciiName, 0); 046 return asciiName; 047 } 048 049 /** 050 * Convert a byte array to a <code>String</code> assuming the ASCII 051 * character set, for use in cases (such as early in the boot process) 052 * where character set conversion is unavailable or inadvisable. 053 * 054 * @param val Byte array to convert 055 * @return The resulting string 056 */ 057 public static String asciiBytesToString(byte[] val) { 058 return asciiBytesToString(val, 0, val.length); 059 } 060 061 /** 062 * Convert a byte array to a <code>String</code> assuming the ASCII 063 * character set, for use in cases (such as early in the boot process) 064 * where character set conversion is unavailable or inadvisable. 065 * 066 * @param val Byte array to convert 067 * @param start Start the string at this byte 068 * @param length Use 'length' bytes 069 * @return The resulting string 070 */ 071 @SuppressWarnings("deprecation") 072 public static String asciiBytesToString(byte[] val, int start, int length) { 073 return new String(val, 0, start, length); 074 } 075 076}