IO流01
1.檔案基礎知識
什么是檔案?
檔案,我們并不陌生,檔案是保存資料的地方,比如大家經常使用的word檔案,txt檔案,excel檔案等,都是檔案,它既可以保存一張圖片,也可以保存聲音、視頻……
-
檔案流
檔案在程式中是以流的形式來操作的:

流:資料在資料源(檔案)和程式(記憶體)之間經歷的路徑
輸入流:資料從資料源(檔案)到程式(記憶體)之間的路徑
輸出流:資料從程式(記憶體)到資料源(檔案)之間的路徑
2.常用的檔案操作
2.1創建檔案
-
創建檔案物件相關構造器和方法
相關方法:
new File(String pathname)//根據路徑構建一個File物件 new File(File patent,String child)//根據父目錄檔案+子路徑構建 new File(String parent,String child)//根據父目錄+子路徑構建
例子:應用案例演示:FileCreate
package li.io.file;
import org.junit.jupiter.api.Test;
import java.io.File;
import java.io.IOException;
//演示創建檔案
public class FileCreate {
public static void main(String[] args) {
}
//方式一 new File(String pathname)//根據路徑構建一個File物件
@Test
public void creat01() {
String filePath = "d:\\news1.txt";
File file = new File(filePath);//在記憶體中創建一個File物件
try {
file.createNewFile();//創建檔案
System.out.println("檔案創建成功");
} catch (IOException e) {
e.printStackTrace();
}
}
//方式二 new File(File patent,String child)//根據父目錄檔案+子路徑構建
//例如:d:\\news.txt,父目錄檔案就是 d:\\
@Test
public void creat02() {
File parenFile = new File("d:\\");
String fileName = "news2.txt";
//這里的file物件,在java程式中只是一個java物件而已
//只有執行了createNewFile方法,才會真正地在磁盤創建檔案
File file = new File(parenFile, fileName);
try {
file.createNewFile();//創建檔案
System.out.println("創建成功~");
} catch (IOException e) {
e.printStackTrace();
}
}
//方式三 new File(String parent,String child)//根據父目錄+子路徑構建
@Test
public void creat03() {
String parentPath = "d:\\"; //這里的兩個 \\,其中有一個是轉義符號,或者直接用 d:/
String filePath = "news3.txt";
File file = new File(parentPath, filePath);
try {
file.createNewFile();
System.out.println("創建檔案成功");
} catch (IOException e) {
e.printStackTrace();
}
}
}
2.2獲取檔案的相關資訊
- getName()
- getAbsolutePath()
- getParent()
- length()
- exists()
- isFile()
- isDirectory()
例子:
package li.io.file;
import org.junit.jupiter.api.Test;
import java.io.File;
public class FileInformation {
public static void main(String[] args) {
}
//獲取檔案的資訊
@Test
public void info() {
//先創建檔案物件
File file = new File("d:\\news1.txt");
//呼叫相應方法,得到對應資訊
//檔案名字-getName()
System.out.println("檔案名字="+file.getName());//檔案名字=news1.txt
//檔案的絕對路徑-getAbsolutePath()
System.out.println("檔案的絕對路徑="+file.getAbsolutePath());//檔案的絕對路徑=d:\news1.txt
//檔案的父級目錄-getParentFile()
System.out.println("檔案的父級目錄="+file.getParentFile());//檔案的父級目錄=d:\
//檔案的大小(位元組)-length()
System.out.println("檔案的大小(位元組)="+file.length());//檔案的大小(位元組)=12 Hello World!
//檔案是否存在-exists()
System.out.println("檔案是否存在="+file.exists());//檔案是否存在=true
//是否為檔案-isFile()
System.out.println("是否為檔案="+file.isFile());//是否為檔案=true
//是否為目錄-isDirectory()
System.out.println("是否為目錄="+file.isDirectory());//是否為目錄=false
}
}
2.3目錄的操作和檔案洗掉
-
mkdir():創建一級目錄
-
mkdirs():創建多級目錄
-
delete():洗掉空目錄或者檔案
例子:
package li.io.file;
import org.junit.jupiter.api.Test;
import java.io.File;
public class Directory_ {
public static void main(String[] args) {
}
//判斷 d:\\news1.txt是否存在,如果存在就洗掉
@Test
public void m1() {
String filePath = "d:\\news1.txt";
File file = new File(filePath);
if (file.exists()) {
if (file.delete()) {
System.out.println(filePath + "洗掉成功");
} else {
System.out.println("洗掉失敗...");
}
} else {
System.out.println("該檔案不存在...");
}
}
//判斷 d:\\demo02 是否存在,存在就洗掉,否則就提示不存在
//這里我們需要體會到,在java中,目錄也被當做檔案
@Test
public void m2() {
String filePath = "d:\\demo02";
File file = new File(filePath);
if (file.exists()) {
if (file.delete()) {
System.out.println(filePath + "洗掉成功");//d:\demo02洗掉成功(先在d盤下創建一個名為 demo02的目錄)
} else {
System.out.println("洗掉失敗...");
}
} else {
System.out.println("該目錄不存在...");
}
}
//判斷d:\\demo\\a\\b\\c目錄是否存在,如果存在就提示已經存在,否則創建
@Test
public void m3() {
String directoryPath = "d:\\demo\\a\\b\\c";
File file = new File(directoryPath);
if (file.exists()) {
System.out.println("該目錄已經存在");
} else {
if (file.mkdirs()) {//多級目錄使用 mkdirs方法,一級目錄使用 mkdir
System.out.println(directoryPath + "創建成功...");
} else {
System.out.println("創建失敗...");
}
}
}
}
3.IO流原理及流的分類
3.1Java IO流原理
- I/O是Input/Output的縮寫,I/O技術是非常實用的技術,用于處理資料傳輸,如讀/寫檔案,網路通訊等
- Java程式中,對于資料的輸入/輸出操作以”流(Stream)“的方式進行
- java.io包下提供了各種“流”類和介面,用以獲取不同種類的資料,并通過方法輸入或輸出資料
- 輸入input:讀取外部資料(磁盤、光碟等存盤設備的資料)到程式(記憶體)中
- 輸出output:將程式(記憶體)資料輸出到磁盤、光碟等存盤設備中
3.2流的分類
-
按操作資料單位不同分為:位元組流(8bit)、字符流(按字符)
位元組流適用于二進制檔案,字符流適用于文本檔案
-
按資料流的流向不同分為:輸入流、輸出流
-
按流的角色不同分為:節點流、處理流(也叫包裝流)
| 抽象基類 | 位元組流 | 字符流 |
|---|---|---|
| 輸入流 | InputStream | Reader |
| 輸出流 | OutputStream | Writer |

1)Java的IO流共涉及到40 多個類,實際上非常規則,都是從如上4個抽象基類派生的
InputStream、OutputStream、Reader、Writer都是抽象類,在使用的時候要去創建它們的實作子類
2)由這四個類派生出來的子類名稱都是以其父類名作為子類名后綴
4.常用的類
InputStream抽象類是所有類位元組輸入流的超類
InputStream常用的子類:
-
FileInputStream:檔案輸入流
-
BufferedInputStream:緩沖位元組輸入流
-
ObjectInputStream:物件位元組輸入流
4.1FileInputStream
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/506012.html
標籤:其他
上一篇:bean的作用域決議
