黑馬程式設計師Java培訓和Android培訓:I/O
終於到第二階段了,聽說I/O是比較重要的部分,所以這部分打算花多點時間打基礎。磨刀不誤砍柴~~
1.File類
(1)是IO中唯一代表磁碟檔案本身資訊的類,而不是檔案中的內容
(2)定義了一些與平臺無關的方法來操作檔案,例如建立、刪除、重新命名
(3)java中的目錄被當做一種特殊的檔案被使用,list方法可以返回目錄中的所有子目錄和檔案
(4)在UNIX下的路徑分割符為(/),在doc下的分割符為(\),java可以正確處理Unix和doc下的路徑分隔符
另外還有以deleteOnExit 是推出後刪除
例項: 判斷某個檔案是否存在,存在側刪除,不存在則建立.
import java.io.*;
public class File {
public static void main(String[] args) {
File f = new File("1.txt");
if(f.exists()){
f.delete();
}else{
try {
f.createNewFile();
} catch (Exception e) {
e.printStackTrace();
}
}
//檔案各種資訊
System.out.println("File name:"+f.getName());
System.out.println("File Path:"+f.getPath());
System.out.println("File abs Path:"+f.getAbsolutePath());
System.out.println("File Parent:"+f.getParent());
System.out.println(f.exists()?"exist":"not exist");
System.out.println(f.canRead()?"read":"not read");
System.out.println(f.isDirectory()?"directory":"not directory");
System.out.println("File last Modified:"+new Date(f.lastModified()));
}
}
2. RandomAccessFile類
提供了眾多檔案訪問方法(操作檔案),支援隨機訪問,在隨機(相對順序而言)讀寫等長記錄格式的檔案時有很大的優勢
2中構造方法 一:只讀 二:可讀可寫
練習:往檔案中寫入三名員工的資訊,每個員工含有姓名和年齡兩個欄位,然後按照第二名,第一名,第三名的先後順序讀出員工資訊。
Employee.java
p lic class Employee {
public String name =null;
public int age =0;
public static final int LEN = 8;
public Employee(String name,int age){
if(name.length()>LEN){
this.name = name.s string(0, 8);
}
else{
while(name.length()<LEN){
name+="\";
}
this.name = name;
this.age = age;
}
}
}
RandomFileTest.java
import java.io.RandomAccessFile;
public class RandomFileTest {
public static void main(String[] args) throws Exception{
Employee e1 = new Employee("zhangsan",23);
Employee e2 = new Employee("lisi",24);
Employee e3 = new Employee("wangwu",25);
RandomAccessFile ra = new RandomAccessFile("employee.txt","rw");
ra.writeChars(e1.name);
ra.writeInt(e1.age);
ra.writeChars(e2.name);
ra.writeInt(e2.age);
ra.writeChars(e3.name);
ra.writeInt(e3.age);
ra.close();
String strName = null;
raf.skipBytes(Employee.LEN*2+4);
for(int i=0;i<Employee.LEN;i++){
strName+=raf.readChar();
}
System.out.println(strName.trim()+":"+raf.readInt());
raf.seek(0);
strName="";
for(int i=0;i<Employee.LEN;i++){
strName+=raf.readChar();
}
System.out.println(strName.trim()+":"+raf.readInt());
raf.skipBytes(Employee.LEN*2+4);
strName="";
for(int i=0;i<Employee.LEN;i++){
strName+=raf.readChar();
}
System.out.println(strName.trim()+":"+raf.readInt());
raf.close();
}
}
3. 節點流:InputStream與OutputStream類:
FileInputStream指定的檔案必須是存在與可讀,OutputStream 不存在就建立,存在則覆蓋,但不能指定一個已經被其他程式開啟的檔案。
建立FileInputStream例項物件時,指定的檔案應當是存在和可讀的。建立FileOutputStream例項物件時,如果指定的檔案已經存在,這個檔案中的原來內容將被覆蓋清除
Java分節點流和過濾流兩大類
4. Reader和Writer
package CSDN.IOtest;
import java.io.*;
public class FileSream2 {
public static void main(String[] args) throws IOException {
FileWriter fileWriter = new FileWriter("hello.txt");
fileWriter.write("www.itheima.com");
fileWriter.close();
char [] buf = new char[1024];
FileReader fileReader = new FileReader("hello.txt");
int len = fileReader.read(buf);
System.out.println(new String(buf,0,len));
fileReader.close();
}
}
5、PipedInputSteam和PipedOutputSteam類
用於在應用程式中建立管道通訊,主要用來執行緒之間的通訊
PipedInputStream 類與PipedOutputStream類用於在應用程式中的建立管道通訊。
使用管道流類,可以實現各個程式模組之間的鬆耦合通訊
ByteArrayInputStream 和ByteArrayOutputStream,用於以IO流的方式來完成對位元組陣列內容的讀寫,來支援類似記憶體虛擬檔案或者記憶體映像檔案的功能。
StringReader類和 StringWriter類來以字元IO流的方式處理字串
這個知識點看的不是太明白,多做練習
相關文章
- 黑馬程式設計師Java培訓和Android培訓:培訓前奏程式設計師JavaAndroid
- 黑馬程式設計師Java培訓和Android培訓:列舉程式設計師JavaAndroid
- 黑馬程式設計師Java培訓和Android培訓_IO(二)程式設計師JavaAndroid
- 黑馬程式設計師Java培訓和Android培訓:程式設計基礎程式設計師JavaAndroid
- 黑馬程式設計師Java培訓和Android培訓:物件導向程式設計師JavaAndroid物件
- 黑馬程式設計師Java培訓和Android培訓:內部類程式設計師JavaAndroid
- 黑馬程式設計師Java培訓和Android培訓Java技術二程式設計師JavaAndroid
- 黑馬程式設計師Java培訓和Android培訓:多執行緒程式設計師JavaAndroid執行緒
- 黑馬程式設計師Java培訓和Android培訓_java高新技術(一)程式設計師JavaAndroid
- 黑馬程式設計師Java培訓和Android培訓Java GUI圖形使用者介面程式設計師JavaAndroidGUI
- Java程式設計師技術培訓需要培訓哪些?Java程式設計師
- 好程式設計師Java培訓分享Java程式設計技巧程式設計師Java
- 長沙Java培訓:自學Java程式設計有必要報培訓班麼?Java程式設計
- 好程式設計師Java培訓Java程式設計師必學技術程式設計師Java
- 好程式設計師Java培訓分享Java程式設計師技能提升指南程式設計師Java
- 好程式設計師Java培訓分享Java和HTML的區別?程式設計師JavaHTML
- 好程式設計師Java培訓Java容器類List和Set分析程式設計師Java
- 程式設計師自學/自我培訓指南程式設計師
- 好程式設計師Java培訓分享maven-概述程式設計師JavaMaven
- Java程式設計師培訓班哪家比較好Java程式設計師
- 好程式設計師Java培訓分享int和Integer的區別程式設計師Java
- 好程式設計師Java培訓分享treeset和hashset的區別程式設計師Java
- 好程式設計師Java培訓分享如何快速入門Java程式設計程式設計師Java
- 好程式設計師Java培訓分享Java之反射技術程式設計師Java反射
- 好程式設計師Java培訓分享Java初學者必讀程式設計師Java
- 好程式設計師Java培訓分享Java多執行緒程式設計師Java執行緒
- 好程式設計師Java培訓分享Java包是什麼?程式設計師Java
- 好程式設計師Java培訓分享如何快速入門Java程式設計師Java
- 好程式設計師Java培訓分享BigDecimal的用法程式設計師JavaDecimal
- 好程式設計師Java培訓分享SpringBoot -YAML程式設計師JavaSpring BootYAML
- 好程式設計師Java培訓分享For迴圈詳解程式設計師Java
- 好程式設計師Java培訓分享Mybatis面試題集合程式設計師JavaMyBatis面試題
- 好程式設計師Java培訓分享Java程式設計師常用的工具類庫程式設計師Java
- 好程式設計師Java培訓分享20個Java程式設計師基礎題程式設計師Java
- 好程式設計師Java培訓分享本地快取如何設計程式設計師Java快取
- java培訓分享:java培訓架構師學習線路圖Java架構
- 好程式設計師Java培訓分享學Java程式設計要注意什麼程式設計師Java
- 好程式設計師Java培訓簡述Java新手如何學程式碼程式設計師Java