/******************************************************************************* * Copyright (c) 2008-2009 SWTBot Committers 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: * Ketan Padegaonkar - initial API and implementation *******************************************************************************/ package org.eclipse.swtbot.swt.finder.utils; import java.io.*; import java.net.URL; import java.nio.charset.Charset; import java.util.ArrayList; import java.util.List; /** * Provides utilities to read and write to files. * * @author Ketan Padegaonkar <KetanPadegaonkar [at] gmail [dot] com> * @version $Id$ */ public class FileUtils { /** * @param filePath the path to the file. * @return the contents of the file in filePath. */ public static String read(String filePath) { return read(new File(filePath)); } /** * @param file the file to read from. * @return the contents of the file. */ public static String read(File file) { try { return read(new FileInputStream(file)); } catch (FileNotFoundException e) { throw new RuntimeException(e); } } /** * @param in the input stream to read from. * @return the contents of the inputstream. */ public static String read(InputStream in) { return read(new InputStreamReader(in, Charset.forName("UTF-8"))); } /** * @param url the URL to read from. * @return the contents of the url. */ public static String read(URL url) { try { return read(url.openStream()); } catch (IOException e) { throw new RuntimeException(e); } } /** * @param in the reader to read from. * @return the contents of the reader. */ public static String read(Reader in) { StringBuffer buffer = new StringBuffer(); try { while (in.ready()) { buffer.append((char) in.read()); } } catch (IOException e) { throw new RuntimeException(e); } finally { close(in); } return buffer.toString(); } public static List<String> readlines(String file) { try { return readlines(new FileInputStream(file)); } catch (FileNotFoundException e) { throw new RuntimeException(e); } } private static List<String> readlines(InputStream in) { return readlines(new InputStreamReader(in, Charset.forName("UTF-8"))); } private static List<String> readlines(Reader in) { BufferedReader reader = new BufferedReader(in); ArrayList<String> lines = new ArrayList<String>(); try { while (reader.ready()) { lines.add(reader.readLine()); } } catch (IOException e) { throw new RuntimeException(e); } finally { close(in); } return lines; } /** * @param text the contents to write to the file. * @param file the file to write to. */ public static void write(String text, File file) { BufferedWriter w = null; try { try { w = new BufferedWriter(new FileWriter(file)); w.append(text); } catch (IOException e) { throw new RuntimeException(e); } } finally { close(w); } } /** * Creates directory specified by destination, and all its parents if they don't exist. * * @param destination the directory to create. */ public static void mkdirs(String destination) { mkdirs(new File(destination)); } /** * Creates directory specified by destination, and all its parents if they don't exist. * * @param destination the directory to create. */ public static void mkdirs(File destination) { if (destination.exists()) { return; } if (!destination.mkdirs()) { throw new RuntimeException("Unable to create directory [" + destination + "]."); } } private static void close(Closeable c) { if (c != null) { try { c.close(); } catch (IOException e) { throw new RuntimeException(e); } } } }