java的文件操作還是非常強(qiáng)大的,這里主要說明幾點(diǎn),后面有一個(gè)詳細(xì)的文件讀寫例子。
1、文件讀寫一定要確保文件打開后要關(guān)閉,而且關(guān)閉方法要寫在finally中,java8出現(xiàn)的閉包操作也可以實(shí)現(xiàn)。
2、文件讀寫一定要明確文件編碼方式,是UTF-8還是GBK,不然肯定會(huì)出錯(cuò)
3、文件讀寫分大文件讀寫和小文件讀寫,大文件讀寫需要用到buffer,即緩沖,小文件就無所謂了
4、java讀寫文件時(shí),文件存儲(chǔ)路徑不要帶中文,java對(duì)中文的支持還是差一些。
代碼參照com.critc.FileReadWriteTest
public class FileReadWriteTest {
/**
* 創(chuàng)建文件夾
*
* @throws Exception
*/
public void createDir() throws Exception {
String path = "D:" + File.separator + "dir";
File file = new File("D:\\dir");
if (!file.exists())
file.mkdir();
}
/**
* 創(chuàng)建文件
*
* @throws Exception
*/
public void createFile() throws Exception {
File file = new File("D:\\dir\\test.txt");
if (!file.exists())
file.createNewFile();
}
/**
* 刪除文件
*/
public void deleteFile() {
File file = new File("D:\\dir\\test.txt");
file.deleteOnExit();
if (file.exists())
file.delete();
}
/**
* 讀取文件列表
*
* @return
*/
public List<String> readFile() {
String path = "D:\\dir\\test.txt";
File file = new File(path);
List<String> list = new ArrayList<String>();
BufferedReader reader = null;
try {
if (file.exists()) {
reader = new BufferedReader(new InputStreamReader(new FileInputStream(path), "GBK"));
String tempString = null;
while ((tempString = reader.readLine()) != null) {
list.add(tempString);
}
reader.close();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
return list;
}
/**
* 寫文件
*/
public void writeFile() {
String path = "D:\\dir\\test.txt";
FileOutputStream fileOutputStream = null;
try {
fileOutputStream = new FileOutputStream(path);
OutputStreamWriter osw = new OutputStreamWriter(fileOutputStream, "GBK");
String fileContent = "測試\r\n20160720\r\n";
osw.write(fileContent);
osw.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
fileOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) throws Exception {
FileReadWriteTest fileReadWrite = new FileReadWriteTest();
fileReadWrite.createDir();
fileReadWrite.createFile();
// fileReadWrite.deleteFile();
fileReadWrite.writeFile();
List<String> list = fileReadWrite.readFile();
for (String str : list) {
System.out.println("文件內(nèi)容:" + str);
}
}
}