/**
* Copyright 2016 benjobs
* <p>
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.opencron.common.utils;
import java.io.*;
/**
* Created by benjobs on 15/6/24.
*/
public abstract class IOUtils implements Serializable {
private static final int EOF = -1;
/**
* The Unix directory separator character.
*/
public static final char DIR_SEPARATOR_UNIX = '/';
/**
* The Windows directory separator character.
*/
public static final char DIR_SEPARATOR_WINDOWS = '\\';
/**
* The system directory separator character.
*/
public static final char DIR_SEPARATOR = File.separatorChar;
/**
* The Unix line separator string.
*/
public static final String LINE_SEPARATOR_UNIX = "\n";
/**
* The Windows line separator string.
*/
public static final String LINE_SEPARATOR_WINDOWS = "\r\n";
public static String readText(File file, String charset) {
InputStream inputStream = null;
InputStreamReader inputReader = null;
BufferedReader bufferReader = null;
if (CommonUtils.notEmpty(file)) {
try {
inputStream = new FileInputStream(file);
inputReader = new InputStreamReader(new FileInputStream(file), charset);
bufferReader = new BufferedReader(inputReader);
StringBuffer strBuffer = new StringBuffer();
// 读取一行
String line;
while ((line = bufferReader.readLine()) != null) {
strBuffer.append(line).append("\n\r");
}
return strBuffer.toString();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (bufferReader != null) {
bufferReader.close();
}
if (inputReader != null) {
inputReader.close();
}
if (inputStream != null) {
inputStream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
return null;
}
public static boolean writeText(File file, Serializable text, String charset) {
try {
PrintWriter out = new PrintWriter(new OutputStreamWriter(new FileOutputStream(file), charset));
out.write(text.toString());
out.flush();
out.close();
return true;
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
public static void writeFile(File file, InputStream inputStream) throws IOException {
AssertUtils.notNull(file,inputStream);
if (!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
BufferedOutputStream output= new BufferedOutputStream(new FileOutputStream(file));
int r;
while((r=inputStream.read())!=-1){
output.write((byte)r);
}
output.close();
}
public static byte[] readFileToArray(File file) throws IOException {
InputStream input = null;
try {
input = openInputStream(file);
long size = file.length();
if(file.length() > Integer.MAX_VALUE) {
throw new IllegalArgumentException("Size cannot be greater than Integer max value: " + size);
}
if (size < 0) {
throw new IllegalArgumentException("Size must be equal or greater than zero: " + size);
}
if (size == 0) {
return new byte[0];
}
byte[] data = new byte[(int) size];
int offset = 0;
int readed;
while (offset < size && (readed = input.read(data, offset, (int)size - offset)) != EOF) {
offset += readed;
}
if (offset != size) {
throw new IOException("Unexpected readed size. current: " + offset + ", excepted: " + size);
}
return data;
} finally {
if (input!=null) {
input.close();
}
}
}
public static FileInputStream openInputStream(File file) throws IOException {
if (file.exists()) {
if (file.isDirectory()) {
throw new IOException("File '" + file + "' exists but is a directory");
}
if (file.canRead() == false) {
throw new IOException("File '" + file + "' cannot be read");
}
} else {
throw new FileNotFoundException("File '" + file + "' does not exist");
}
return new FileInputStream(file);
}
public static final synchronized String getTempFolderPath() {
return System.getProperty("java.io.tmpdir");
}
public static final synchronized String getProjectFolderPath() {
String path = null;
try {
File directory = new File("");
path = directory.getAbsolutePath();
} catch (Exception e) {
e.printStackTrace();
}
return path;
}
public static void main(String[] args) {
System.out.println(getProjectFolderPath());
}
public static boolean fileExists(Object file) {
AssertUtils.notNull(file);
if (file instanceof String) {
file = new File((String) file);
}
return ((File)file).exists();
}
}