今天筆記:
寫檔跟讀檔,還有java讀中文常常跑亂碼的解決方方式
package iotest;
import java.io.*;
public class iotest {
public static void main(String[] args) {
File[] roots = File.listRoots();
for (File root : roots) {
System.out.println(root.getAbsolutePath()); // 顯示有幾個槽 若有權限 C:\ D:\ E:\ F:\
}
System.out.println(File.pathSeparator); // Windows環境下 為分號; Linux系統為分號 :
System.out.println(File.separator); // 符號為 \
File newfolder = new File("./newfolder"); // . 一點為相對的父路徑下 ./newfolder 這個資料夾
if (!newfolder.exists())
newfolder.mkdir(); // 如果 這個資料夾路徑不存在,建立一個資料夾/ 前提若父路徑沒打對則會出錯
File newfolders = new File("./newfolders/testiofolder");
if (!newfolders.exists())
newfolders.mkdirs(); // 用 mkdirs 可建立多個資料夾 //若沒相對的父路徑直接幫你建立 這邊用mkdir就會出錯 因為沒有父路徑為newfolders 只有不加S的
File creatFile1 = new File(newfolder, "file1");
if (!creatFile1.exists())
try {
creatFile1.createNewFile(); // 建立一個空的檔案,File相關必須用try catch來夾
} catch (IOException e) {
e.printStackTrace();
}
File[] listofFile = newfolder.listFiles();
for (File file : listofFile) {
System.out.println(file); // .\newfolder\file1
System.out.println(file.getParent()); // .\newfolder
System.out.println(file.getName()); // file1
}
try {
FileInputStream reader = new FileInputStream(creatFile1);
int temp;
while ((temp = reader.read()) != -1) { // 讀到沒資料的時候 read()此方法會return -1
System.out.print((char) temp);
}
BufferedReader input = new BufferedReader(
new InputStreamReader(new FileInputStream(creatFile1), "utf-8"));
//一般讀中文用fileReader+bufferedReader就好,但碰到需要解碼的如utf-8或unicode等編碼方式,就需要用FileStream傳成Read並指定編碼方式
String str;
while((str= input.readLine())!=null) {
System.out.println(str);
}
input.close();
reader.close();
FileOutputStream writer = new FileOutputStream("./newfolder/file2");
byte [] newstring =("太神拉!").getBytes();
writer.write(newstring);
writer.flush();
/*
* flush 會呼叫 write 把 內部的 buf 暫存資料寫入到目的地,
而會需要呼叫 flush 的原因是因為, 上面的 write method會把資料寫入到 buf 這個暫存的buffer裡面.
如果程式忘了呼叫 flush, 就會遺失上一次 write 的資料了
*/
writer.close();
} catch (FileNotFoundException e) {
System.out.println("FileNotFoundException");
} catch (IOException ie) {
System.out.println("IOException");
}
}
}
@copyright MRcodingRoom
觀看更多文章請點MRcoding筆記
觀看更多文章請點MRcoding筆記