Day15:IO流(一)
java.io.File類:
1.凡是與輸入輸出有關的類、接口等都定義在java。io包下。
2.File是一個類,可以表示構造器創建其對象。此對象表示一個文件或一個文件目錄。
3.File類對象是與平臺無關的。
4.File中的方法,僅涉及到如何創建、刪除、重命名等等。
5.路徑:①絕對路徑—包括盤符在內的完整的文件路徑,②相對路徑—在當前文件目錄下文件的路徑。
IO原理:
輸入input:
|———讀取外部數據到程序(內存)中。
輸出output:
|——將程序(內存)數據輸出到存儲設備中。
IO的體系:
按照數據流向的不同:輸入流,輸出流。
按照處理數據的單位的不同:字節流,字符流(處理文本文件)。
按照角色的不同:節點流(直接作用於文本),處理流。
抽象基類: 節點流(文件流): 緩衝流:
|---InputStream |---FileInputStream |---BufferedInputStream
|---OutputStream |---FileOutputStream |---BufferedOutputStream
|---Reader |---FileReader |---BufferedReader
|---Writer |---FileWriter |---BufferedWriter
FileInputStream實例:
@Test
public void TestFileInputStream2() {
// 2.創建一個FileInputStream類的對象
FileInputStream fis = null;
try {
// 1.創建一個File類的對象
File file = new File("hello.txt");
fis = new FileInputStream(file);
// 3.調用FileInputStream的方法實現file文件的讀取。
// read():讀取文件的一個字節。當執行到文件結尾時,返回-1.
int b;
while((b = fis.read() )!= -1){
System.out.print((char)b);
}
} catch (IOException e) {
e.printStackTrace();
}finally {
// 4.關閉相應的流
try {
if(fis != null){
fis.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
FileOutputStream實例:@Test
public void testOutputStream(){
//1.創建一個File對象,表明要寫入的文件位置
//輸出的物理文件可以不存在,當執行過程中,若不存在會自動創建。若存在,則會覆蓋原有文件。
File file = new File("hello2.txt");
//2.創建一個FileOutputStream的對象,將file的對象作爲形參傳遞給FileOutputStream的構造器中
FileOutputStream fos = null;
try {
//3.寫入操作
fos = new FileOutputStream(file);
fos.write(new String("I Love You!").getBytes());
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally{
//4.關閉流
if(fos != null)
{
try {
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
文件複製:
@Test
public static void copyFile(String src , String dest)
{
//1.提供文件複製的方法
File f1 = new File(src);
File f2 = new File(dest);
//2.提供相應的流
FileInputStream fis = null;
FileOutputStream fos = null;
try {
fis = new FileInputStream(f1);
fos = new FileOutputStream(f2);
//3.實現複製
byte[] b = new byte[20];
int len;
while((len = fis.read(b)) != -1){
fos.write(b, 0, len);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
//4.關閉流
if(fos != null){
try {
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(fis != null){
try {
fis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}