/* * Copyright (c) 2004-2009 XMLVM --- An XML-based Programming Language * * This program is free software; you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by the Free Software * Foundation; either version 2 of the License, or (at your option) any later * version. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more * details. * * You should have received a copy of the GNU General Public License along with * this program; if not, write to the Free Software Foundation, Inc., 675 Mass * Ave, Cambridge, MA 02139, USA. * * For more information, visit the XMLVM Home Page at http://www.xmlvm.org */ package org.xmlvm.iphone; import java.io.BufferedReader; import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; public class NSData { private String data; public NSData(InputStream in) { readData(in); } protected NSData() { this.data = ""; } private void readData(InputStream in) { data = ""; String line; BufferedReader reader = new BufferedReader(new InputStreamReader(in)); try { while ((line = reader.readLine()) != null) { data += line; data += System.getProperty("line.separator"); } reader.close(); } catch (IOException e) { // do nothing } } public InputStream getInputStream() { return new ByteArrayInputStream(data.getBytes()); } @Override public String toString() { return this.data; } public static NSData dataWithContentsOfFile(String path) { // If this marker appears in the path, then the resource needs to be // loaded out of a JAR file. We expect it in this case to be the JAR // file the app is run from. final String IN_JAR_MARKER = ".jar!"; if (path.contains(IN_JAR_MARKER)) { int startOfResource = path.indexOf(IN_JAR_MARKER) + IN_JAR_MARKER.length(); return new NSData(NSData.class.getResourceAsStream(path.substring(startOfResource))); } else { try { return new NSData(new FileInputStream(new File(path))); } catch (FileNotFoundException e) { return null; } } } }