Java中讀取文件中的內容的幾種方式如下:
讀取文件
字符流讀寫
public class CharacterIoUtil {
private static final Logger log = Logger.getLogger("com.yzr.io.CharacterIoUtil");
private static Integer len;
private static final char[] BYTES = new char[1024];
private static boolean result = false;
private static String stringContent = null;
/**
* 將字符串寫入文件
*
* @param character 字符串
* @param filePath 文件絕對路徑
* @return 是否成功
*/
public static boolean characterWrite(String character, String filePath) {
try (BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(filePath))) {
if (character.length() > 0) {
bufferedWriter.write(character);
result = true;
}
} catch (Exception e) {
log.info("錯誤...");
}
return result;
}
/**
* 從一個文件寫入到另一個文件
*
* @param fromPath 原文件
* @param toPath 目標文件
*/
public static boolean fileWrite(String fromPath, String toPath) {
try (BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(toPath));
BufferedReader bufferedReader = new BufferedReader(new FileReader(fromPath))) {
while ((len = bufferedReader.read(BYTES)) != -1) {
bufferedWriter.write(BYTES);
result = true;
}
} catch (Exception e) {
log.info("錯誤...");
}
return result;
}
/**
* 讀取文件中內容,以字符串的形式返回
*
* @param filePath 文件路徑
* @return 讀取的文件內容信息
*/
public static String fileRead(String filePath) {
try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {
while ((len = reader.read(BYTES)) != -1) {
stringContent = new String(BYTES, 0, len);
}
} catch (Exception e) {
log.info("錯誤...");
}
return stringContent;
}
/**
* 讀取文件中內容,以字符串的形式返回
*
* @param stream 流對象
* @return 讀取的文件內容信息
*/
public static String readByStream(InputStream stream) {
try (InputStreamReader reader = new InputStreamReader(stream, "GBK")) {
while ((len = reader.read(BYTES)) != -1) {
stringContent = new String(BYTES, 0, len);
}
} catch (Exception e) {
log.info("錯誤...");
}
return stringContent;
}
/**
* 將流中的字符寫入文件
*
* @param output 寫流對象
* @param input 讀流對象
*/
public static boolean writeByStream(InputStream input, OutputStream output) {
try (OutputStreamWriter writer = new OutputStreamWriter(output, "GBK");
InputStreamReader reader = new InputStreamReader(input, "GBK")) {
while ((len = reader.read(BYTES)) != -1) {
writer.write(BYTES);
result = true;
}
} catch (Exception e) {
log.info("錯誤...");
}
return result;
}
}
字節流讀寫
public class ByteStreamUtil {
private static final Logger log = Logger.getLogger("com.yzr.io.CharacterIoUtil");
private static int len;
private static final byte[] BYTES = new byte[2048];
private static boolean result = false;
private static String stringResult = null;
/**
* 讀取流
*
* @param file 文件對象
* @return 字符串
*/
public static String fileIn(File file) {
try (BufferedInputStream stream = new BufferedInputStream(new FileInputStream(file))) {
if (!file.exists()) {
throw new IOException("此文件不存在");
}
while ((len = stream.read(BYTES)) != -1) {
stringResult = new String(BYTES, 0, len, "GBK");
}
} catch (Exception e) {
log.info("錯誤...");
}
return stringResult;
}
/**
* 寫入流
*
* @param file 文件對象
* @param content 內容
* @return 是否成功
*/
public static boolean fileOut(File file, String content) {
try (BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(file))) {
if (!file.exists()) {
throw new IOException("此文件不存在");
}
if (content.length() > 0) {
stream.write(content.getBytes());
result = true;
}
} catch (Exception e) {
log.info("錯誤...");
}
return result;
}
/**
* 寫入流
*
* @param in 讀取流對象
* @param out 寫入流對象
* @return 是否成功
*/
public static boolean fileCopy(InputStream in, OutputStream out) {
try (BufferedOutputStream outputStream = new BufferedOutputStream(out);
BufferedInputStream inputStream = new BufferedInputStream(in)) {
while ((len = inputStream.read(BYTES)) != -1) {
outputStream.write(BYTES, 0, len);
result = true;
}
} catch (Exception e) {
log.info("錯誤...");
}
return result;
}
}
以上內容僅供參考