Java 讀取、寫入 本地檔案,圖片
一、java方式
二、java.io方式
demo.class.getClassLoader().getResource("fixture").getFile();
#從根目錄下開始,讀取target目錄下的檔案
一、java方式
1、使用FileWriter類寫文字檔案
2、使用FileWriter類往文字檔案中追加資訊
3、使用BufferedWriter類寫文字檔案
4、使用FileReader類讀文字檔案
5、使用BufferedReader類讀文字檔案
public class MainClass{
public static void main(String[] args){
}
/**
* 使用FileWriter類寫文字檔案
*/
public static void writeMethod1(){
String fileName="C:\\kuka.txt";
try{
//使用這個建構函式時,如果存在kuka.txt檔案,
//則先把這個檔案給刪除掉,然後建立新的kuka.txt
FileWriter writer=new FileWriter(fileName);
writer.write("Hello Kuka:\n");
writer.write(" My name is coolszy!\n");
writer.write(" I like you and miss you。");
writer.close();
} catch (IOException e){
e.printStackTrace();
}
}
/**
* 使用FileWriter類往文字檔案中追加資訊
*/
public static void writeMethod2() {
String fileName="C:\\kuka.txt";
try{
//使用這個建構函式時,如果存在kuka.txt檔案,
//則直接往kuka.txt中追加字串
FileWriter writer=new FileWriter(fileName,true);
SimpleDateFormat format=new SimpleDateFormat();
String time=format.format(new Date());
writer.write("\n\t"+time);
writer.close();
} catch (IOException e){
e.printStackTrace();
}
}
//注意:上面的例子由於寫入的文字很少,使用FileWrite類就可以了。但如果需要寫入的
//內容很多,就應該使用更為高效的緩衝器流類BufferedWriter。
/**
* 使用BufferedWriter類寫文字檔案
*/
public static void writeMethod3(){
String fileName="C:/kuka.txt";
try{
BufferedWriter out=new BufferedWriter(new FileWriter(fileName));
out.write("Hello Kuka:");
out.newLine(); //注意\n不一定在各種計算機上都能產生換行的效果
out.write(" My name is coolszy!\n");
out.write(" I like you and miss you。");
out.close();
} catch (IOException e){
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 使用FileReader類讀文字檔案
*/
public static void readMethod1(){
String fileName="C:/kuka.txt";
int c=0;
try{
FileReader reader=new FileReader(fileName);
c=reader.read();
while(c!=-1){
System.out.print((char)c);
c=reader.read();
}
reader.close();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 使用BufferedReader類讀文字檔案
*/
public static void readMethod2() {
String fileName="c:/kuka.txt";
String line="";
try{
BufferedReader in=new BufferedReader(new FileReader(fileName));
line=in.readLine();
while (line!=null){
System.out.println(line);
line=in.readLine();
}
in.close();
} catch (IOException e){
e.printStackTrace();
}
}
}
二、java.io方式
1、InputStream、OutputStream(位元組流)
2、BufferedInputStream、BufferedOutputStream(快取位元組流)使用和位元組流差不多,但效率更高(推薦使用)
3、InputStreamReader、OutputStreamWriter(位元組流,這種方式不建議使用,不能直接位元組長度讀寫)。使用範圍用做字元轉換
4、BufferedReader、BufferedWriter(快取流,提供readLine方法讀取一行文字)
5、Reader、PrintWriter(PrintWriter這個很好用,在寫資料的同事可以格式化)
1、InputStream、OutputStream(位元組流)
//讀取檔案(位元組流)
InputStream in = new FileInputStream("d:\\1.txt");
//寫入相應的檔案
OutputStream out = new FileOutputStream("d:\\2.txt");
//讀取資料
//一次性取多少位元組
byte[] bytes = new byte[2048];
//接受讀取的內容(n就代表的相關資料,只不過是數字的形式)
int n = -1;
//迴圈取出資料
while ((n = in.read(bytes,0,bytes.length)) != -1) {
//轉換成字串
String str = new String(bytes,0,n,"GBK"); #這裡可以實現位元組到字串的轉換,比較實用
System.out.println(str);
//寫入相關檔案
out.write(bytes, 0, n);
}
//關閉流
in.close();
out.close();
2、BufferedInputStream、BufferedOutputStream(快取位元組流)使用和位元組流差不多,但效率更高(推薦使用)
//讀取檔案(快取位元組流)
BufferedInputStream in = new BufferedInputStream(new FileInputStream("d:\\1.txt"));
//寫入相應的檔案
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream("d:\\2.txt"));
//讀取資料
//一次性取多少位元組
byte[] bytes = new byte[2048];
//接受讀取的內容(n就代表的相關資料,只不過是數字的形式)
int n = -1;
//迴圈取出資料
while ((n = in.read(bytes,0,bytes.length)) != -1) {
//轉換成字串
String str = new String(bytes,0,n,"GBK");
System.out.println(str);
//寫入相關檔案
out.write(bytes, 0, n);
}
//清楚快取
out.flush();
//關閉流
in.close();
out.close();
3、InputStreamReader、OutputStreamWriter(位元組流,這種方式不建議使用,不能直接位元組長度讀寫)。使用範圍用做字元轉換
//讀取檔案(位元組流)
InputStreamReader in = new InputStreamReader(new FileInputStream("d:\\1.txt"),"GBK");
//寫入相應的檔案
OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream("d:\\2.txt"));
//讀取資料
//迴圈取出資料
byte[] bytes = new byte[1024];
int len = -1;
while ((len = in.read()) != -1) {
System.out.println(len);
//寫入相關檔案
out.write(len);
}
//清楚快取
out.flush();
//關閉流
in.close();
out.close();
4、BufferedReader、BufferedWriter(快取流,提供readLine方法讀取一行文字)
//讀取檔案(字元流)
BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream("d:\\1.txt"),"GBK"));#這裡主要是涉及中文
//BufferedReader in = new BufferedReader(new FileReader("d:\\1.txt")));
//寫入相應的檔案
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("d:\\2.txt"),"GBK"));
//BufferedWriter out = new BufferedWriter(new FileWriter("d:\\2.txt"));
//讀取資料
//迴圈取出資料
String str = null;
while ((str = in.readLine()) != null) {
System.out.println(str);
//寫入相關檔案
out.write(str);
out.newLine();
}
//清楚快取
out.flush();
//關閉流
in.close();
out.close();
5、Reader、PrintWriter(PrintWriter這個很好用,在寫資料的同事可以格式化)
//讀取檔案(位元組流)
Reader in = new InputStreamReader(new FileInputStream("d:\\1.txt"),"GBK");
//寫入相應的檔案
PrintWriter out = new PrintWriter(new FileWriter("d:\\2.txt"));
//讀取資料
//迴圈取出資料
byte[] bytes = new byte[1024];
int len = -1;
while ((len = in.read()) != -1) {
System.out.println(len);
//寫入相關檔案
out.write(len);
}
//清楚快取
out.flush();
//關閉流
in.close();
out.close();