1.实现FilenameFilter接口,应用accept方法实现遍历指定目录下的所有符合条件的文件,这里以遍历出所有的.java文件为例:
import java.io.File;
import java.io.FilenameFilter;
public class File_list_accept {
/**
* Main 方法,程序入口
* @param args
*/
public static void main(String[] args) {
File file = new File(".");
File[] nameList = file.listFiles(new MyFilenameFilter());
for (File name : nameList) {
if (name.getAbsoluteFile().isDirectory()) {
File[] nameListFiles = name.listFiles(new MyFilenameFilter());
for (File name1 : nameListFiles) {
System.out.println(name1.getName());
}
}
}
}
}
class MyFilenameFilter implements FilenameFilter {
@Override
public boolean accept(File dir, String name) {
return name.endsWith(".java")||new File(name).isDirectory();
}
}
2.PrintStream类的练习
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintStream;
public class PrintStreamText {
public static void main(String[] args) throws FileNotFoundException {
PrintStream printStream = null;
FileOutputStream fos = new FileOutputStream("printStream.txt");
printStream = new PrintStream(fos);
printStream.println("Java 处理流体系之PrintStream流的测试代码");
printStream.print(new PrintStreamText());
printStream.close();
// 这里我们只需要关闭处理流PrintStream即可,而不必关心FileOutputSream
// 因为当我们关闭了最上层的处理流时,系统会自动关闭被该处理流包装的节点流
}
}
3.输入流FileInputStream和FileReader
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class Read_FileInputStream_and_FileReader {
public static void main(String[] args) {
Read_FileInputStream_and_FileReader file = new Read_FileInputStream_and_FileReader();
// file.fileInputSreamMethod();
file.fileReaderMethod();
}
/**
* 使用字节流读取数据
*/
public void fileInputSreamMethod(){
FileInputStream fileInputStream = null;
try {
// 中文注释
// fileInputStream = new FileInputStream("D:\\D\\Android_Code\\Java_IO_(1)\\src\\File.java");
fileInputStream = new FileInputStream("./src/File_list_accept.java");
byte[] bytes = new byte[1024];// 当这里的数组设置成1时,输出上面的“中文注释”时将出现乱码,
// 这是因为每个中文字符占据2个字节,而read方法读取时只读到了半个中文字符,因此导致乱码
int readCount = 0;
while ((readCount = fileInputStream.read(bytes)) > 0) {
System.out.println(new String(bytes, 0, readCount));
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if (fileInputStream != null) {
try {
fileInputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
/**
* 使用字符流读取数据
*/
public void fileReaderMethod(){
FileReader fileReader = null;
try {
fileReader = new FileReader("./src/File_list_accept.java");
// fileReader.skip(200);
char[] chars = new char[1024];
int readCount = 0;
while ((readCount = fileReader.read(chars)) > 0) {
System.out.println(new String(chars, 0, readCount));
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if (fileReader != null) {
try {
fileReader.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
4.输出流FileOutputStream和FileWriter
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
public class Write_FileOutputStream_and_FileWriter {
public static void main(String[] args) throws IOException {
/**
* FileInputStream
*/
FileInputStream fileInputStream = null;
FileOutputStream fileOutputStream = null;
fileInputStream = new FileInputStream("./src/File_list_accept.java");
fileOutputStream = new FileOutputStream("newFile.txt");
byte[] bytes = new byte[1024];
int readCount = 0;
while ((readCount = fileInputStream.read(bytes)) > 0) {
fileOutputStream.write(bytes, 0, readCount);
}
if (fileInputStream != null) {
fileInputStream.close();
}
if (fileOutputStream != null) {
fileOutputStream.close();
}
/**
* FileWriter
*/
FileWriter fileWriter = null;
fileWriter = new FileWriter("./fileWriter.txt");
fileWriter.write("---------黄鹤楼---------\r\n");
// \r\n是Window的换行符,Linux等则用\n即可
fileWriter.write("白日依山尽,黄河入海流。\r\n");
fileWriter.write("欲穷千里目,更上一层楼。");
if (fileWriter != null) {
fileWriter.close();
}
}
}