有用過Java I/O 的人應該都會覺得很難用又很不直觀,每次都要把InuptStream和OutputStream導來導去,更不用說還要處理一堆Error Handling,真的很麻煩....
下面是用Java原生API去處理File I/O的範例
public static void writeAllText( File file, String contents )
throws FileNotFoundException, IOException {
if( file == null ) {
throw new IllegalArgumentException( "File should not be null" );
}
if( !file.exists() ) {
throw new FileNotFoundException( "File does not exist: " + file );
}
if( !file.isFile() ) {
throw new IllegalArgumentException( "Should not be a directory: " + file );
}
if (!file.canWrite()) {
throw new IllegalArgumentException( "File cannot be written: " + file );
}
// FileWriter always assumes default encoding is OK
Writer output = new BufferedWriter( new FileWriter( file ) );
try {
output.write( contents );
}
finally {
output.close();
}
}
但是如果改成用Apache Jakarta Commons 來寫呢?程式碼就可以精簡成下面這樣
String testData = "test data";
try {
FileUtils.writeStringToFile( new File( "/tmp/test.txt" ), testData, "UTF-8" );
} catch( IOException e ) {
e.printStackTrace();
}
當然Guava 也有提供類似的功能
String testData = "test data";
try {
Files.write( testData , new File( "/tmp/temp.txt"), Charsets.UTF_8 );
} catch( IOException e ) {
e.printStackTrace();
}
所以好的Utility Library 帶你上天堂,請愛用Google Guava I/O....
Reference:
[1] Java I/O Tutorial

沒有留言:
張貼留言