目錄
輸入輸出流
輸出流
輸入流
File類
文件可以認爲是相關記錄或放在一起的數據集合
在java中,使用java.io.File類對文件進行操作
絕對路徑和相對路徑
絕對路徑:從盤符開始的路徑
相對路徑:是從當前路徑開始的路徑
package com.imooc.file;
import java.io.File;
import java.io.IOException;
public class FileDemo {
public static void main(String[] args) {
//創建File對象
// File file1=new File("F:\\javaWork\\imooc\\IOProj\\score.txt");
// File file1=new File("F:\\javaWork","imooc\\IOProj\\score.txt");
File file=new File("F:\\javaWork");
File file1=new File(file,"imooc\\IOProj\\imooc.txt");
//判斷文件是否存在
System.out.println("是否是目錄:"+file1.isDirectory());
System.out.println("是否是文件:"+file1.isFile());
//創建目錄 多級目錄用mkdirs()
File file2=new File("F:\\javaWork\\imooc\\IOProj\\HashSet");
if(!file2.exists()) {
file2.mkdir();
}
//創建文件
if(!file1.exists()) {
try {
file1.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
字節流
字節輸入流:InputStream
字節輸出流:OutputStream
FileInputStream
- 從文件系統中的某個文件中獲得輸入字節
- 用於讀取諸如圖像數據之類的原生字節流
package com.imooc.file;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class FileInputDemo2 {
public static void main(String[] args) {
// 創建一個FileInputStream對象
try {
FileInputStream fis = new FileInputStream("imooc.txt");
byte[] b=new byte[100];
fis.read(b,0,5);
System.out.println(new String(b));
fis.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
FileOutputStream
package com.imooc.file;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileOutputDemo {
public static void main(String[] args) {
FileOutputStream fos;
FileInputStream fis;
try {
fos = new FileOutputStream("imooc.txt",true);
fis=new FileInputStream("imooc.txt");
fos.write(50);
fos.write('a');
System.out.println(fis.read());
System.out.println((char)fis.read());
fos.close();
fis.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
package com.imooc.file;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileOutputDemo1 {
public static void main(String[] args) {
// 文件拷貝
try {
FileInputStream fis=new FileInputStream("happy.gif");
FileOutputStream fos=new FileOutputStream("happycopy.gif");
int n=0;
byte[] b=new byte[1024];
while((n=fis.read(b))!=-1){
fos.write(b,0,n);
}
fis.close();
fos.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}
}
}
緩衝流
緩衝輸入流:BufferedInputStream
緩衝輸出流:BufferedOutputStream
package com.imooc.file;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class BufferedDemo {
public static void main(String[] args) {
try {
FileOutputStream fos=new FileOutputStream("imooc.txt");
BufferedOutputStream bos=new BufferedOutputStream(fos);
FileInputStream fis=new FileInputStream("imooc.txt");
BufferedInputStream bis=new BufferedInputStream(fis);
long startTime=System.currentTimeMillis();
bos.write(50);
bos.write('a');
bos.flush();
System.out.println(bis.read());
System.out.println((char)bis.read());
long endTime=System.currentTimeMillis();
System.out.println(endTime-startTime);
fos.close();
bos.close();
fis.close();
bis.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
字符流
字符輸入流:Reader
字符輸出流:Writer
字節字符轉換流
- InputStreamReader
- OutputStreamWriter
package com.imooc.charstream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class ReaderDemo {
// 把imooc.txt複製到imooc1.txt中
public static void main(String[] args) {
try {
FileInputStream fis = new FileInputStream("imooc.txt");
InputStreamReader isr = new InputStreamReader(fis, "GBK");
BufferedReader br = new BufferedReader(isr);
FileOutputStream fos = new FileOutputStream("imooc1.txt");
OutputStreamWriter osw = new OutputStreamWriter(fos, "GBK");
BufferedWriter bw = new BufferedWriter(osw);
int n = 0;
char[] cbuf = new char[10];
// while((n=isr.read())!=-1){
// System.out.print((char)n);
// }
// while((n=isr.read(cbuf))!=-1){
// String s=new String(cbuf,0,n);
// System.out.print(s);
// }
while ((n = br.read(cbuf)) != -1) {
// String s=new String(cbuf,0,n);
bw.write(cbuf, 0, n);
bw.flush();
}
fis.close();
fos.close();
isr.close();
osw.close();
br.close();
bw.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
對象序列化
步驟:
- 創建一個類,繼承Serializable接口
- 創建對象
- 將對象寫入文件
- 從文件讀取對象信息
- 對象輸入流 ObjectInputStream
- 對象輸出流 ObjectOutputStream
package com.imooc.serial;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
public class GoodsTest {
public static void main(String[] args) {
// 定義Goods類的對象
Goods goods1 = new Goods("gd001", "電腦", 3000);
try {
FileOutputStream fos = new FileOutputStream("imooc.txt");
ObjectOutputStream oos = new ObjectOutputStream(fos);
FileInputStream fis = new FileInputStream("imooc.txt");
ObjectInputStream ois = new ObjectInputStream(fis);
// 將Goods對象信息寫入文件
oos.writeObject(goods1);
oos.writeBoolean(true);
oos.flush();
// 讀對象信息
try {
Goods goods = (Goods) ois.readObject();
System.out.println(goods);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(ois.readBoolean());
fos.close();
oos.close();
fis.close();
ois.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}