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

Java I/o复习与总结 Dome 一

2014-01-13 12:57 106 查看
  一、File类

  File类是File类是java.io包中唯一处理磁盘文件和目录的类。它提供的方法都是与平台无关的,
通过使用File类提供各种方法能够创建、删除文件和目录,或者获取磁盘上指定的文件和目录的相关信息。

package com.tai.io;

import java.io.File;
import java.io.FileFilter;
import java.io.IOException;

public class FileDemo
{
/**
* File类是java.io包中唯一处理磁盘文件和目录的类。它提供的方法都是与平台无关的,
* 通过使用File类提供各种方法能够创建、删除文件和目录,或者获取磁盘上指定的文件和目录的相关信息。
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException
{
File file = new File("E:/文件夹");
if(file.mkdir())
{
System.out.println("文件夹已创建!");
}

File file2 = new File("E:/文件夹/文件.txt");
if(file2.createNewFile())
{
System.out.println("文件已经创建!");
}

getInfor(file2);

if(file2.delete())
{
System.out.println("文件已删除!");
}

File Dir = new File("C:"+File.separator+"abc");//separator 文件分割符这样写便于代码跨平台,更加健壮!
fFilter(Dir);
}

/*
*获取相关信息
*/
private static void getInfor(File file)
{
System.out.println("文件名"+file.getName());
System.out.println("文件父路径"+file.getParent());
System.out.println("文件的绝对路径"+file.getAbsolutePath());
System.out.println("所在磁盘的大小"+file.getTotalSpace()/(1024*1024*1024)+"GB");
System.out.println("所在磁盘的可用空间"+file.getUsableSpace()/(1024*1024*1024)+"GB");
System.out.println("是否是文件"+file.isFile());
System.out.println("是否是文件夹"+file.isDirectory());
System.out.println("是否是隐藏文件"+file.isHidden());
System.out.println("是否可读"+file.canRead()+"  是否可写"+file.canWrite()+"  是否可执行"+file.canExecute());
}

/*
* FilenameFilter 过滤接口 此处用内部类实现FileFilter的accept()方法
* FilenameFilter和FileFilter类似,也提供文件过滤功能
* 性能上FilennameFilter较FileFilter效率稍高
*/
private static void fFilter(File file)
{
File[] files = file.listFiles(new FileFilter()
{
@Override
public boolean accept(File pathname)
{
if(pathname.isFile()&&pathname.getName().endsWith(".txt"))
{
return true;
}
return false;
}
});
System.out.println("该目录下的所有文本文件");
for(File f:files)
{
System.out.println(f.getName());
}
}

}


 

  运行结果:

文件夹已创建!
文件已经创建!
文件名文件.txt
文件父路径E:\文件夹
文件的绝对路径E:\文件夹\文件.txt
所在磁盘的大小84GB
所在磁盘的可用空间31GB
是否是文件true
是否是文件夹false
是否是隐藏文件false
是否可读true  是否可写true  是否可执行true
文件已删除!
该目录下的所有文本文件
b.txt
新建文本文档 (2).txt
新建文本文档.txt


 二、字节流

  计算机中的数据都是以字节为单位进行处理的,这类的数据保存文件也成为“二进制文本”,在Java中对这些文本的操作就是要使用Java的字节流对象。

InputStream和OutputStream分别是输入与输出字节流,它们都是抽象类型的,都不能实例化,它们在I/O包中的顶层,作为了众多字节流的父类。

Java中的字节流有很多,这是我写的几个常用的字节流Demo.

FileInputStream/FileOutputStream

FileInputStream与FileOutputStream 被称为文件流,是最常见的字节流。用于对磁盘文件的读写操作。
* File类不只能创建、删除、获取文剪信息,但是不能打开和读写文件。FileInputStream与FileOutoutStream就是用于读写文件的
* FileInputStream 的构造方法
* FileInputStream fis = new FileInputStream("c:/abc");
File file = new File("c:/abc");
FileInputStream fis = new FileInputStream(file);
为了简化常用:
FileInputStream fis = new FileInputStream(new File("c:/abc"));

Demo:

package com.tai.io;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class FileOutputStreamDemo
{
/**
* 本程序的功能是将一个文本中的内容复制到另一个文本中。
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException
{
FileInputStream fis = new FileInputStream(new File("C:/abc/Demo.txt"));
FileOutputStream fos = new FileOutputStream(new File("C:/abc/Demo2.txt"),false);
int b= 0,len=0;
byte[] bt = new byte[512];

while(-1!=(len=fis.read(bt,0,512) ) )
{
fos.write(bt,0,len);
}
System.out.println("已经吧Demo.txt中的内容复制到了Demo2.txt中!!");
fos.close();
fis.close();

FileOutputStream fos2 = new FileOutputStream(new File("C:/abc/Demo3.txt"),false);
writein(fos2,"hello world!");
System.out.println("已经hello world写入到了文件C:/abc/Demo3.txt中");
}

/*
* 简单的向文件写入字符串
*/
private static void writein(FileOutputStream fos,String str)
{
byte[] b  = str.getBytes();
try
{
fos.write(b);
fos.close();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}

}
}


FileOutputStram
执行结果:

  已经吧Demo.txt中的内容复制到了Demo2.txt中!!
已经hello world写入到了文件C:/abc/Demo3.txt中
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: