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());
}
}
}