InputStream主要方法
FileInputStream示例
import java.io.*;
public class ReadFile{
public static void main(String args[]){
try{
FileInputStream f = new FileInputStream("test.txt");
int len = f.read();
while(len != -1){
System.out.println(len);
len = f.read();
} f.close();
}
catch(FileNotFoundException e){
System.out.print(e.getMessage());
}
catch(IOException e){
e.printStackTrace();
}
}
}
OutputStream主要方法
FileOutputStream示例
import java.io.*;
public class CopyFile{
public static void CopyMyFile(FileInputStream in,FileOutputStream out){
byte[] b = new byte[100];
int len;
try{
while((len = in.read(b)) != -1){
out.write(b,0,len);
} in.close(); out.close();
}
catch(IOException e){
System.out.println(e.getMessage());
}
}
public static void main(String args[]){
FileInputStream in = null;
FileOutputStream out = null;
try{
in = new FileInputStream("test.txt");
out = new FileOutputStream("CopyTarget.txt");
CopyFile.CopyMyFile(in,out);
System.out.println("文件拷貝完畢!");
}
catch(FileNotFoundException e){
System.out.println(e.getMessage());
}
}
}
文件處理
在I/O處理中,最常見的是對文件的操作,java.io包中所提供的支持包括類File、FileInputStream、FileOutputStream以及接口FilenameFilter。
類File提供了一種與機器無關的方式來描述一個文件對象。
通過類File所提供的方法,我們可以操作文件及目錄的相關屬性。如:文件名,文件路徑等。
Java將文件目錄看作特殊的文件,即:文件名的列表。
File類
File類的構造方法可用來生成一個新文件或目錄。public File(String path);public File(String path, String name);public File(File dir, String name);
File類相關方法(一)
File類示例(一)
import java.io.*;
public class FileTest1{
public static void main(String args[]){
try{
File f = new File("E://Temp//JavaC","MyFile.txt"); System.out.println(f.createNewFile());
System.out.println(f.getName());
System.out.println(f.getPath());
System.out.println(f.getAbsolutePath());
System.out.println(f.getParent());
}
catch(Exception e){
}
}
}
File類相關方法(二)
File類示例(二)
import java.io.*;
public class FileTest2{
public static void main(String args[]){
try{
File f = new File("E://Temp//JavaC","MyFile.txt");
System.out.println(f.exists());
System.out.println(f.canWrite());
System.out.println(f.canRead());
System.out.println(f.isFile());
System.out.println(f.isDirectory());
}
catch(Exception e){
}
}
}
File類相關方法(三)
File類示例(三)
import java.io.*;
public class FileTest3{
public static void main(String args[]){
try{
File f1 = new File("E://Temp//JavaC","MyFile.txt");
System.out.println(f1.length());
System.out.println(f1.delete());
System.out.println("等待...");
Thread.sleep(3000);
File f2 = new File("E://Temp//JavaC//MyDir");
System.out.println(f2.mkdir());
System.out.println("再等待...");
Thread.sleep(3000);
File f3 = new File("c:/");
String[] files = f3.list();
for(int i=0; i<files.length; i++){
File f = new File(f3.getPath() + files[i]);
if(f.isFile())
System.out.println(f.getName());
}
}
catch(Exception e){
}
}
}
過濾流
java.io包中提供類FilterlnputStream和FilterOutputStream分別作爲所有過濾輸入流和輸出流的父類。
FilterlnputStream和FilterOutputStream是抽象類,本身不能生成任何實例。
爲了使用一個過濾流,通常通過在構造方法的參數中指定所要連接的輸入/輸出流。如:FilterInputStream(InputStream in)FilterOutputStream(OutputStream out)
過濾流
FilterInputStream 類的子類包括
DataInputStream
DataOutputStream
BufferedInputStream
BufferedOutputStream
BufferedInputStreamBufferedOutputStream
BufferedInputStream和BufferedOutputStream實現了帶緩衝的過濾流。
把任意的輸入流或輸出流“捆綁”到緩衝流上會獲得性能的提高。
示例
import java.io.*;
public class BufferedStreamTest{
public static void main(String arga[]){
File f = null;
FileInputStream in = null;
FileOutputStream out = null;
BufferedInputStream bfin = null;
BufferedOutputStream bfout = null;
byte[] b = {97,98,99};
int len;
try{
f = new File("MyTest.txt");
f.createNewFile();
out = new FileOutputStream(f);
bfout = new BufferedOutputStream(out);
bfout.write(b);
bfout.close();
in = new FileInputStream(f);
bfin = new BufferedInputStream(in);
while((len=bfin.read()) != -1){
System.out.println(len);
}
bfin.close();
}
catch(Exception e){
System.out.println(e.getMessage());
}
}
}
DataInputStreamDataOutputStream
DataInputStream和DataOutputStream不僅能讀/寫數據流,而且還能讀/寫各種Java語言的內構類型(Built-in Types),如:boolean,int,float等。
這些內構類型在文件中的表示方式和它們在內存中一樣,無需多餘的轉換。
示例
import java.io.*;
public class DataStreamTest{
public static void main(String args[]){
try{
String strData;
DataOutputStream dataout = new DataOutputStream(new FileOutputStream("Data.txt"));
dataout.writeBoolean(false);
dataout.writeInt(123);
dataout.writeDouble(55.89);
DataInputStream datain = new DataInputStream(new FileInputStream("Data.txt"));
System.out.println(datain.readBoolean());
System.out.println(datain.readInt());
System.out.println(datain.readDouble());
}
catch(Exception e){
System.out.println(e.getMessage());
}
}
}
PrintStream類
打印流的作用是把Java語言的內構類型以其字符表示形式送到相應的輸出流。
System.out就是一個標準的打印流。
PrintStream使用示例
import java.io.*;
public class PrintStreamTest{
public static void main(String args[]){
try{
PrintStream p = new PrintStream(new FileOutputStream("Print.txt"));
p.println("how are you!");
p.println("fine,thank you");
p.println("中國人民站起來了!");
p.println(true);
p.println(28.65);
p.println(321);
System.out.println("輸出完畢!");
}
catch(Exception e){
System.out.println(e.getMessage());
}
}
}