001 /*******************************************************************************
002 * Copyright (c) 2009 Progress Software, Inc.
003 * Copyright (c) 2004, 2008 IBM Corporation and others.
004 *
005 * All rights reserved. This program and the accompanying materials
006 * are made available under the terms of the Eclipse Public License v1.0
007 * which accompanies this distribution, and is available at
008 * http://www.eclipse.org/legal/epl-v10.html
009 *
010 *******************************************************************************/
011 package org.fusesource.hawtjni.generator.util;
012
013 import java.io.BufferedInputStream;
014 import java.io.ByteArrayInputStream;
015 import java.io.File;
016 import java.io.FileInputStream;
017 import java.io.FileNotFoundException;
018 import java.io.FileOutputStream;
019 import java.io.IOException;
020 import java.io.InputStream;
021 import java.io.OutputStream;
022
023 /**
024 *
025 * @author <a href="http://hiramchirino.com">Hiram Chirino</a>
026 */
027 public class FileSupport {
028
029 public static boolean write(byte[] bytes, File file) throws IOException {
030 if( !equals(bytes, file) ) {
031 FileOutputStream out = new FileOutputStream(file);
032 try {
033 out.write(bytes);
034 } finally {
035 out.close();
036 }
037 return true;
038 }
039 return false;
040 }
041
042 public static void copy(InputStream is, OutputStream os) throws IOException {
043 try {
044 byte data[] = new byte[1024*4];
045 int count;
046 while( (count=is.read(data, 0, data.length))>=0 ) {
047 os.write(data, 0, count);
048 }
049 } finally {
050 close(is);
051 close(os);
052 }
053 }
054
055 public static boolean equals(byte[] bytes, File file) throws IOException {
056 FileInputStream is = null;
057 try {
058 is = new FileInputStream(file);
059 return equals(new ByteArrayInputStream(bytes), new BufferedInputStream(is));
060 } catch (FileNotFoundException e) {
061 return false;
062 } finally {
063 close(is);
064 }
065 }
066
067 public static void close(InputStream is) {
068 try {
069 if (is != null)
070 is.close();
071 } catch (Throwable e) {
072 }
073 }
074
075 public static void close(OutputStream ioss) {
076 try {
077 if (ioss != null)
078 ioss.close();
079 } catch (Throwable e) {
080 }
081 }
082
083 public static boolean equals(InputStream is1, InputStream is2) throws IOException {
084 while (true) {
085 int c1 = is1.read();
086 int c2 = is2.read();
087 if (c1 != c2)
088 return false;
089 if (c1 == -1)
090 break;
091 }
092 return true;
093 }
094
095
096
097 }