blob: 6d860818a5314e8c3747ef165fd2e2a124335971 [file] [log] [blame]
/*
* Sun Public License Notice
*
* The contents of this file are subject to the Sun Public License
* Version 1.0 (the "License"). You may not use this file except in
* compliance with the License. A copy of the License is available at
* http://www.sun.com/
*
* The Original Code is NetBeans. The Initial Developer of the Original
* Code is Sun Microsystems, Inc. Portions Copyright 1997-2000 Sun
* Microsystems, Inc. All Rights Reserved.
*/
package org.netbeans.lib.cvsclient.file;
import org.netbeans.lib.cvsclient.JavaCvsSrcBundle;
import org.jetbrains.annotations.NonNls;
import java.io.*;
import java.util.StringTokenizer;
/**
* A utility class for file based operations.
*
* @author Thomas Singer
*/
public final class FileUtils {
@NonNls private static final String U_PREFIX = "u=";
/**
* Copies the specified sourceFile to the specified targetFile.
*/
public static void copyFile(File sourceFile, File targetFile) throws IOException {
if (sourceFile == null || targetFile == null) {
throw new NullPointerException("sourceFile and targetFile must not be null"); // NOI18N
}
// ensure existing parent directories
final File directory = targetFile.getParentFile();
if (!directory.exists() && !directory.mkdirs()) {
throw new IOException(JavaCvsSrcBundle.message("could.not.create.directory.error.message", directory)); // NOI18N
}
InputStream inputStream = null;
OutputStream outputStream = null;
try {
inputStream = new BufferedInputStream(new FileInputStream(sourceFile));
outputStream = new BufferedOutputStream(new FileOutputStream(targetFile));
final byte[] buffer = new byte[32768];
for (int readBytes = inputStream.read(buffer);
readBytes > 0;
readBytes = inputStream.read(buffer)) {
outputStream.write(buffer, 0, readBytes);
}
}
finally {
if (inputStream != null) {
try {
inputStream.close();
}
catch (IOException ex) {
// ignore
}
}
if (outputStream != null) {
try {
outputStream.close();
}
catch (IOException ex) {
// ignore
}
}
}
}
public static String ensureLeadingSlash(String filePath) {
if (filePath.startsWith("/")) {
return filePath;
}
return '/' + filePath;
}
public static String removeLeadingSlash(String filePath) {
if (filePath.startsWith("/")) {
return filePath.substring(1);
}
return filePath;
}
public static String ensureTrailingSlash(String pathName) {
if (pathName.endsWith("/")) {
return pathName;
}
return pathName + '/';
}
public static String removeTrailingSlash(String pathName) {
if (pathName.endsWith("/")) {
return pathName.substring(0, pathName.length() - 1);
}
return pathName;
}
public static boolean isReadOnlyMode(String mode) {
for (StringTokenizer tokenizer = new StringTokenizer(mode, ","); tokenizer.hasMoreTokens();) {
final String token = tokenizer.nextToken();
if (token.startsWith(U_PREFIX)) {
return token.indexOf('w') < 0;
}
}
return false;
}
public static String readLineFromFile(File file) throws IOException {
BufferedReader reader = null;
try {
reader = new BufferedReader(new FileReader(file));
return reader.readLine();
}
finally {
if (reader != null) {
reader.close();
}
}
}
public static void writeLine(File file, String line) throws IOException {
BufferedWriter writer = null;
try {
writer = new BufferedWriter(new FileWriter(file));
writer.write(line);
writer.newLine();
}
finally {
if (writer != null) {
try {
writer.close();
}
catch (IOException ex) {
// ignore
}
}
}
}
/**
* This utility class needs not to be instantiated anywhere.
*/
private FileUtils() {
}
}