Java文件和流操作
java i/o系统的类实在是太多了,这里我们只学习一些基本的和常用的,相信能够掌握这些就可以解决我们以后的普通应用了
1.什么是数据流 ?
数据流是指所有的数据通信通道
有两类流,inputstream and outputstream,java中每一种流的基本功能依赖于它们
inputstream 用于read,outputstream 用于write, 读和写都是相对与内存说的,读就是从其他地方把数据拿进内存,写就是把数据从内存推出去
这两个都是抽象类,不能直接使用
2.inputstream 的方法有:
read() 从流中读入数据 有3中方式:
int read() 一次读一个字节
int read(byte[]) 读多个字节到数组中
int read(byte[],int off,int len) 指定从数组的哪里开始,读多长
skip() 跳过流中若干字节
available() 返回流中可用字节数,但基于网络时无效,返回0
marksupported() 判断是否支持标记与复位操作
mark() 在流中标记一个位置,要与marksupported()连用
reset() 返回标记过的位置
close() 关闭流
3.outputstream 的方法:
write(int) 写一个字节到流中
write(byte[]) 将数组中的内容写到流中
write(byte[],int off,int len) 将数组中从off指定的位置开始len长度的数据写到流中
close() 关闭流
flush() 将缓冲区中的数据强制输出
4.file 类
file 可以表示文件也可以表示目录,file 类控制所有硬盘操作
构造器:
file(file parent,string child) 用父类和文件名构造
file(string pathname) 用绝对路径构造
file(string parent,string child) 用父目录和文件名构造
file(uri uri) 用远程文件构造
常用方法:
boolean createnewfile();
boolean exists();
例子:
//建立 test.txt 文件对象,判断是否存在,不存在就创建
import java.io.*;
public class createnewfile{
public static void main(string args[]){
file f=new file("test.txt");
try{
if(!f.exists())
f.createnewfile();
else
system.out.println("exists");
}catch(exception e){
e.printstacktrace();
}
}
}
boolean mkdir()/mkdirs()
boolean renameto(file destination)
例子://看一下这 mkdir()/mkdirs() 的区别和 renameto 的用法
import java.io.*;
public class createdir{
public static void main(string args[]){
file f=new file("test.txt");
file f1=new file("dir");
file f2=new file("top/bottom");
file f3=new file("newtest.txt");
try{
f.renameto(f3);
f1.mkdir();
f2.mkdirs();
}catch(exception e){
e.printstacktrace();
}
}
}
string getpath()/getabsolutepath()
string getparent()/getname()
例子://硬盘上并没有parent 目录和 test.txt 文件,但我们仍然可以操作,因为我们创建了他们的对象,是对对象进行操作
import java.io.*;
public class test{
public static void main(string args[]){
file f=new file("parent/test.txt");
file f1=new file("newtest.txt");
try{
system.out.println(f.getparent());
system.out.println(f.getname());
system.out.println(f1.getpath());
system.out.println(f1.getabsolutepath());
}catch(exception e){
e.printstacktrace();
}
}
}
String list[] //显示目录下所有文件
long lastModified() //返回 1970.1.1 到最后修改时间的秒数
boolean isDirectory()
例子://列出目录下的所有文件和目录,最后修改时间,是目录的后面标出<DIR>,是文件的后面标出文件长度
import java.io.*;
import java.util.*;
public class Dir{
public static void main(String args[]){
File f=new File("Dir");
String[] listAll=null;
File temp=null;
try{
listAll=f.list();
for(int i=0;i<listAll.length;i++){
temp=new File(listAll<i>);
System.out.print(listAll<i>+"\t");
if(temp.isDirectory())
System.out.print("\t<DIR>\t");
else
System.out.print(temp.length()+"\t");
System.out.println(new Date(temp.lastModified()));
}
}catch(Exception e){
e.printStackTrace();
}
}
}
5.文件流的建立
File f=new File("temp.txt");
FileInputStream in=new FileInputStream(f);
FileOutputStream out=new FileOutputStream(f);
例子:文件拷贝
import java.io.*;
public class Copy{
public static void main(String args[]){
FileInputStream fis=null;
FileOutputStream fos=null;
try{
fis=new FileInputStream("c2.gif");
fos=new FileOutputStream("c2_copy.gif");
int c;
while((c=fis.read()) != -1)
fos.write(c);
}catch(Exception e){
e.printStackTrace();
}finally{
if(fis != null) try{ fis.close(); }catch(Exception e){ e.printStackTrace(); }
if(fos!= null) try{ fos.close(); }catch(Exception e){ e.printStackTrace(); }
}
}
}
文章整理:iocblog
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。