platform35/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/refresh/win32/Convert.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/platform35/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/refresh/win32/Convert.java Thu Jul 30 11:56:23 2009 -0500
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * Copyright (c) 2002, 2007 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.core.internal.resources.refresh.win32;
+
+import java.io.*;
+
+/**
+ * Performs character to byte conversion for passing strings to native win32
+ * methods.
+ */
+public class Convert {
+
+ /*
+ * Obtains the default encoding on this platform
+ */
+ private static String defaultEncoding=
+ new InputStreamReader(new ByteArrayInputStream(new byte[0])).getEncoding();
+
+ /**
+ * Converts the given String to bytes using the platforms default
+ * encoding.
+ *
+ * @param target The String to be converted, can not be <code>null</code>.
+ * @return byte[] The resulting bytes, or <code>null</code>.
+ */
+ /**
+ * Calling String.getBytes() creates a new encoding object and other garbage.
+ * This can be avoided by calling String.getBytes(String encoding) instead.
+ */
+ public static byte[] toPlatformBytes(String target) {
+ if (defaultEncoding == null)
+ return target.getBytes();
+ // try to use the default encoding
+ try {
+ return target.getBytes(defaultEncoding);
+ } catch (UnsupportedEncodingException e) {
+ // null the default encoding so we don't try it again
+ defaultEncoding = null;
+ return target.getBytes();
+ }
+ }
+}