文件讀寫

Serialization數組


FileOutputStream 把字節寫入文件
ObjectOutputStream 把對象轉換成能夠寫入串流的數據xml

序列化對象寫入文件
(1)
FileOutputStream fileStream = new FileOutputStream("MyGame.ser");//若文件不存在,則會自動建立
(2)
ObjectOutputStream os = new ObjectOutputStream(fileStream);
(3)寫入對象
os.writeObject(characterOne);
os.writeObject(characterTwo);//character* 必需要實現序列化
os.writeObject(characterThree);//writeObject()方法,會將對象打成串流送到FileOutputStream來寫入文件對象

(4)關閉ObjectOutputStream
os.close();接口


讓類實現實例化,就讓該類實現Serializable接口。
當對象被序列化是,該對象引用的實例變量也會被序列化。three

transient 標記某實例變量時,表示該變量不能或不該該被序列化,序列化程序會跳過該變量ci

Deserialization
(1)
FileInputStream fileStream = new FileInputStream("MyGame.ser");//若文件不存在,則會拋出異常
(2)
ObjectInputStream os = new ObjectInputStream(fileStream)
(3)讀取對象
Object one = os.readObject();
Object two = os.readObject();
Object three = os.readObject();//每次調用readObject()都會動stream中讀出下一個對象,讀取書序與寫入順序相同,次數超過會拋出異常
(4)轉換對象類型
GameCharacter elf = (GameCharacter) one;
GameCharacter troll = (GameCharacter) two;
GameCharacter magician = (GameCharacter) three;
(5)關閉ObjectInputStream
os.close();//FileInputStream會自動跟着關閉字符串


把字符串寫入文本文件
FileWriter writer = new FileWriter("Foo.txt");
writer.write("hello foo!");
writer.close();get

File對象 表明磁盤上的文件或目錄的路徑名稱it

用途:
(1)建立出表明現存盤文件的File對象io

File f = new File("MyCode.txt");

(2)創建新的目錄

File dir = new File("Chapter7");
dir.mkdir();

(3)列出目錄下得內容

if(dir.isDirectory()){
String[] dirContents = dir.list();
for(int i = 0;i < dirContents.lengh; i++){
System.out.println(dirContents[i]);
}
}

(4)取得文件或目錄的絕對路徑

System.out.println(dir.getAbsolutePath());

(5)刪除文件或目錄

boolean isDeleted = f.delete();


BufferedWriter writer = new BufferedWriter(new FileWriter(aFile));
writer.flush();//強制緩衝區當即寫入


讀取文本文件
try{
File f = new File("MyText.txt");
FileReader fileReader = new FileReader(f);
BufferedReader reader = new BufferedReader(fileReader);//只有在緩衝區讀空的時候纔回去磁盤讀取,以獲取更高的效率
String line = null;
while( (line = reader.readLine()) != null ){
System.Out.println(line);
}
reader.close();
}catch(Excepton e){
e.printStackTrace();
}

寫入文本文件

try{
File file = new File("XXX.xml");
Reader reader = ...;
Writer writer = new BufferedWriter(new FileWriter(file));
char[] buff = new char[1024];
for(int i=0;(i=reader.read(buff))>0;){
writer.write(buff,0,i);
}
writer.close();
reader.close();
}catch(Exception e){
e.printStackTrace();
}

解析字串String s = "a/b/c"String[] argS = s.split("/");//split()方法會用參數所指定的字符拆開字符串,並存入數組

相關文章
相關標籤/搜索