您的位置:首页 > 编程语言 > Java开发

Java IO流

2016-03-08 15:24 183 查看
1.Java文件系统管理

File类的用途

java.io.File 用于表示文件(目录),也就是说程序员可以通过File 类在程序中操作硬盘上的文件和目录。
File类只用于表示文件(目录)的信息(名称、大小等),不能对文件的内容进行访问。


java.io.File 基本API

- File(String)             指定文件名的构造器
- longlength()             文件的长度
- longlastModified()
- StringgetName()
- StringgetPath()
- booleanexists()
- booleandir.isFile()
- booleandir.isDirectory()
- booleanmkdir()
- booleanmkdirs()
- booleandelete()
- booleancreateNewFile()throwIOException
- File[]listFile()


File API方法

/**
*2016年3月8日下午3:29:55
*@author John
*任务:
*1.检查当前文件夹中是否包含目录demo
*2.如果没有demo,就创建文件夹demo
*3.在demo中创建文件test.txt
*4.显示demo文件夹的内容
*5.显示test.txt的绝对路径名
*6.显示test.txt的文件长度和创建时间
*/
public class FileDemo {
public static void main(String[] args) throws IOException  {
File dir = new File(".");
//显示路径
System.out.println(dir.getCanonicalPath()); //pwd
//1.
File demo = new File(dir, "demo");//不是在磁盘上创建
if (! demo.exists()) {
//2.
demo.mkdir();
}
//3.
File test = new File(demo, "test.txt");
if (! test.exists()) {
//空文件,长度为0
test.createNewFile(); //touch
}
//4.显示目录内容
File[] files = demo.listFiles();
System.out.println(files);
//5.
System.out.println(test.getCanonicalPath());
//6.
System.out.println(test.length());
System.out.println(new Date(test.lastModified()));
//删除文本和目录
test.delete();
demo.delete();
}
}


2.IO流(InputStream, OutputStream)

Java中的 IO流是实现输入/输出的基础。

- InputStream、OutputStream都是抽象类
InputStream抽象了应用程序读取数据的方式
OutputStream抽象了应用程序写出数据的方式
- EOF = End of File = -1
- 输入流基本方法:
int b = in.read() 读取一个byte无符号填充到int低八位,-1是EOF
in.read(byte[] buf) 读取数据填充到buf中
in.read(byte[]buf,intstart,intsize) 读取数据填充到buf中
in.skip(longn)
in.close();
- 输出流的基本方法:
out.write(int b) 写出一个byte到流b的低八位写出
out.write(byte[]buf) 将缓冲区buf都写入到流
out.write(byte[] buf, int start, int size) 将buf的一部分写到流中
out.flush() 清理缓冲
out.close();


3.FileInputStream

文件输入流 FileInputStream 继承了 InputStream,FileInputStream具体实现了在文件上读取数据。

public static void printHex(String fileName) throws IOException {
//创建文件输入流对象
FileInputStream in = new FileInputStream(fileName);
int b;
//循环读取byte
while ((b = in.read()) != -1) {
if (b <= 0xf) {
System.out.println("0");
}
System.out.println(Integer.toHexString(b)+" ");
}
in.close();
}

public class IOUtils_01Demo {
public static void main(String[] args) throws IOException {
IOUtils_01.printHex("demo/");
}
}


4.FileOutputStream

文件输出流 FileOutputStream继承了OutputStream, FileOutputStream实现了向文件中写出byte数据的方法。

public class FileOutDemo {
public static void main(String[] args) throws IOException {
FileOutputStream out = new FileOutputStream("demo/out.dat");
out.write('A');
out.write('B');
int a = -3;
out.write(a>>>24);
out.write(a>>>16);
out.write(a>>>8);
out.write(a);
byte[] gbk = "中国".getBytes("gbk");
out.write(gbk);
out.close();
IOUtils_01.printHex("demo/out.dat");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: