您的位置:首页 > 职场人生

黑马程序员——Java IO总结(三)

2011-12-22 20:09 357 查看
黑马程序员——Java IO总结(三)

---------------------- android培训java培训、期待与您交流!
----------------------

一、File类

l 用来将文件或文件夹封装成对象

l 方便对文件或文件夹的属性信息进行操作

l File对象可以作为参数传递给流的构造函数

l 了解File类的常用方法

boolean createNewFile(): 在指定位置创建文件,如果该文件已经存在,则不创建,返回false。和输出流不一样,输出流对象创建文件时,若文件存在,会覆盖

boolean mkdir(): 创建目录

boolean mkdirs(): 创建多级目录

boolean delete(): 删除失败返回false

void deleteOnExit(): 程序退出时删除

boolean exist(): 判断文件是否存在

boolean isDirectory(): 判断是否为目录

boolean isFile():判断是否为文件

判断File对象是否为文件或目录时,一定要先判断Fild对象是否存在

String getName()

String getPath()

String getAbsolutePath()

String getParent()

l 实例:列出指定目录下的所有文件或文件夹,包含子目录的内容。

import java.io.File;
// 深度优先搜索 DFS
public class ListFiles {
public static void main(String[] args) {
listFiles(new File("c:\\windows"));
}

public static void listFiles(File dir) {
File[] files = dir.listFiles();

for (File file : files) {
System.out.println(file);
if(file.isDirectory())
listFiles(file);
}
}
}


l 实例:删除带内容的目录

import java.io.File;

public class RemoveDir {
public static void main(String[] args) {
removeDir(new File("d:/bb"));
}

public static void removeDir(File dir) {
File[] files = dir.listFiles();

for (File file : files) {
if (file.isDirectory())
removeDir(file);
else
System.out.println("【文  件】" + file.toString() + ": "
+ file.delete());

}
System.out.println("【文件夹】" + dir.toString() + ": " + dir.delete());
}
}


l 实例:将一个指定目录下的Java文件的绝对路径,存储到一个文本文件中

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class JavaFileList {
public static void main(String[] args) {
File dir = new File("F:\\Code\\Java\\heiMa");
List<File> list = new ArrayList<File>();

javaFileList(list, dir);

write2File(list);
}

public static void javaFileList(List<File> list, File dir) {
File[] files = dir.listFiles();

for (File file : files) {
if (file.isDirectory())
javaFileList(list, file);
else {
if (file.getName().endsWith(".java"))
list.add(file);
}
}
}

public static void write2File(List<File> list) {
BufferedWriter bw = null;
try {
bw = new BufferedWriter(new FileWriter("JavaFiles.txt"));

for (File file : list) {
bw.write(file.getAbsolutePath());
System.out.println(file.getAbsolutePath());
bw.newLine();
bw.flush();
}
} catch (IOException e) {
throw new RuntimeException(e);
} finally {
try {
if (bw != null)
bw.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
}


二、Properties类

Properties是HashTable的子类,也就是说它具务Map集合的特点。而且它里面存储的键值对都有是字符串。Properties类是集合中与IO技术相结合的集合容器。它的特点:可以用于键值对形式的配置文件。

l 实例:合并流

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.SequenceInputStream;
import java.util.Vector;

public class SequenceStreamDemo {
public static void main(String[] args) throws IOException {
Vector<FileInputStream> v=new Vector<FileInputStream>();
v.add(new FileInputStream("d:\\1.txt"));
v.add(new FileInputStream("d:\\2.txt"));
v.add(new FileInputStream("d:\\3.txt"));

SequenceInputStream sis=new SequenceInputStream(v.elements());

FileOutputStream fos=new FileOutputStream("d:\\4.txt");

byte[] b=new byte[1024];
int len=0;

while((len=sis.read(b))!=-1){
fos.write(b, 0, len);
}

fos.close();
sis.close();
}
}


l 实例:文件分割与合并

import java.io.*;
import java.util.*;

public class SplitFile {
public static void main(String[] args) throws IOException {
// splitFile();
mergeFile();
}

public static void mergeFile() throws IOException {
List<InputStream> list = new ArrayList<InputStream>();
for (int i = 1; i < 4; i++) {
list.add(new FileInputStream("d:\\split\\" + i + ".part"));
}

final Iterator<InputStream> it = list.iterator();

Enumeration<InputStream> e = newEnumeration<InputStream>() {

@Override
public InputStream nextElement() {
return it.next();
}

@Override
public boolean hasMoreElements() {
return it.hasNext();
}
};

SequenceInputStream sis = new SequenceInputStream(e);
FileOutputStream fos = new FileOutputStream("d:\\merge.bmp");

byte[] b = new byte[1024 * 1024];
int len = 0;

while ((len = sis.read(b)) != -1) {
fos.write(b, 0, len);
}

sis.close();
fos.close();
}

public static void splitFile() throws IOException {
FileInputStream fis = new FileInputStream("d:\\1.bmp");
FileOutputStream fos = null;

byte[] b = new byte[1024 * 1024];
int len = 0;
int count = 1;

while ((len = fis.read(b)) != -1) {
fos = new FileOutputStream("d:\\split\\" + count++ + ".part");
fos.write(b, 0, len);
fos.close();
}

fis.close();
}
}


---------------------- android培训java培训、期待与您交流!
----------------------

详细请查看:http://edu.csdn.net/heima
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: