/*
*
* 获取指定目录下,指定扩展名的文件(包含子目录中的)
* 这些文件的绝对路径写入到一个文本文件中。
*
* 简单说,就是建立一个指定扩展名的文件的列表。
*
* 思路:
* 1,必须进行深度遍历。
* 2,要在遍历的过程中进行过滤。将符合条件的内容都存储到容器中。
* 3,对容器中的内容进行遍历并将绝对路径写入到文件中。
*
*
*/
import java.util.*;
import java.io.*;
public class PrintList
{
public static void main(String args[]){
File dir = new File("q:/mycode");
List list = new ArrayList();
getFiles(dir,new FilenameFilter(){
public boolean accept(File dir, String name){
return name.endsWith(".java");
}
},list);
File file = new File("q:/list.txt");
try{
if(!file.exists()){
file.createNewFile();
}
}catch(Exception e){
}
writeListToFile(list,file);
}
//遍历文件夹,得到符合filter的文件
public static void getFiles(File dir,FilenameFilter filter,List list){
File[] files = dir.listFiles();
for(File file:files){
if(file.isDirectory()){
getFiles(file,filter,list);
}else{
if(filter.accept(dir,file.getName())){
list.add(file);
}
}
}
}
//将list中的文件名写入txt
public static void writeListToFile(List list,File file){
BufferedWriter bw = null;
try{
bw = new BufferedWriter(new FileWriter(file,true));
Iterator it = list.iterator();
while(it.hasNext()){
File fileTemp = (File)it.next();
bw.write(fileTemp.getAbsolutePath());
bw.newLine();
bw.flush();
}
}catch(Exception e){
}finally{
try{
if(bw!=null)bw.close();
}catch(Exception e){
}
}
}
}
——————————————————————————————————————————————————————————————
import java.io.*;
public class IODemo{
public static void main(String args[]) throws Exception{
/*
File file = new File("1.txt");
file.createNewFile();
System.out.println(file.getAbsolutePath());
*/
deleteDirectory(new File("q:/dd"),0);
}
public static void printWriterMethod() throws Exception{
/*
* PrintWriter:字符打印流。
* 构造函数参数:
* 1,字符串路径。
* 2,File对象。
* 3,字节输出流。
* 4,字符输出流。
*
*/
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
PrintWriter out = new PrintWriter(new FileWriter("out.txt"),true);
String line = null;
while((line=bufr.readLine())!=null){
if("over".equals(line))
break;
out.println(line.toUpperCase());
// out.flush();
}
out.close();
bufr.close();
}
//删除文件夹,从最底层文件开始删
public static void deleteDirectory(File dir,int level){
File files[] = dir.listFiles();
for(File file:files){
if(file.isDirectory()){
deleteDirectory(file,level);
System.out.println(file.getName());
}else{
System.out.println(getLevel(level)+file.getName());
file.delete();
}
}
System.out.println(dir.getName());
dir.delete();
}
//递归文件夹
public static void listFiles(File f,int level) throws Exception{
File files[] = f.listFiles();
level++;
for(File file:files){
if(file.isDirectory()){
System.out.println("Directory:"+file.getName());
listFiles(file,level);
}else{
System.out.println(getLevel(level)+file.getName());
}
}
}
public static String getLevel(int level){
StringBuilder sb = new StringBuilder();
for(int i=0;i<level;i++){
sb.append("--");
}
return sb.toString();
}
//文件过滤
public static void filtFileMethod(){
File file = new File("q:/mycode");
File files[] = file.listFiles(new FilenameFilter(){
public boolean accept(File dir, String name){
if(name.endsWith(".class"))
return true;
return false;
}
});
for(File temp:files){
System.out.println(temp.getName());
}
}
//利用转换流指定码表
public static void characterSetFile(){
BufferedReader br = null;
BufferedWriter bw = null;
String line = null;
try{
br = new BufferedReader(new InputStreamReader(System.in,"UTF-8"));
bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("q:/6.txt"),"GB2312"));
while((line=br.readLine())!=null){
bw.write(line.toUpperCase());
bw.newLine();
bw.flush();
}
}catch(Exception e){
throw new RuntimeException("读写异常");
}finally{
try{
if(br!=null) br.close();
if(bw!=null) bw.close();
}catch(Exception e){
}
}
}
public static void readKeyToFile(){
BufferedReader br = null;
BufferedWriter bw = null;
String line = null;
try{
br = new BufferedReader(new InputStreamReader(System.in));
bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("q:/6.txt")));
while((line=br.readLine())!=null){
bw.write(line.toUpperCase());
bw.newLine();
bw.flush();
}
}catch(Exception e){
throw new RuntimeException("读写异常");
}finally{
try{
if(br!=null) br.close();
if(bw!=null) bw.close();
}catch(Exception e){
}
}
}
//用到转换流
public static void readKey2() throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
while(true){
System.out.println(br.readLine());
}
}
public static void readKey() throws Exception{
InputStream in = System.in;
while(true){
int ch = in.read();
System.out.println((char)ch);
}
}
public static void ByteStreamCopyMethod(){
FileInputStream fis = null;
FileOutputStream fos = null;
try{
fis = new FileInputStream("q://1.txt");
fos = new FileOutputStream("q://7.txt");
byte b[] = new byte[1024];
int len = 0;
while((len=fis.read(b))!=-1){
fos.write(b,0,len);
}
}catch(Exception e){
}
}
public static void lineNumberReaderMethod(){
FileReader fr = null;
LineNumberReader lnr = null;
try{
fr = new FileReader("q:/1.txt");
lnr = new LineNumberReader(fr);
String line = null;
lnr.setLineNumber(100);
while((line=lnr.readLine())!=null){
System.out.println(lnr.getLineNumber()+":"+line);
}
}catch(Exception e){
}finally{
if(lnr!=null)
try{
lnr.close();
}catch(Exception e){
}
}
}
public static void copyTextByBuffered(){
FileReader reader = null;
FileWriter writer = null;
BufferedReader br = null;
BufferedWriter bw = null;
try{
reader = new FileReader("q://1.txt");
br = new BufferedReader(reader);
writer = new FileWriter("q://5.txt");
bw = new BufferedWriter(writer);
String line = null;
while((line=br.readLine())!=null){
bw.write(line);
bw.newLine();
bw.flush();
}
}catch(Exception e){
}finally{
try{
if(br!=null)br.close();
if(bw!=null)bw.close();
}catch(Exception e){
}
}
}
public static void bufferedWriterMethod(){
FileWriter writer = null;
BufferedWriter bw = null;
try{
writer = new FileWriter("q:/2.txt",true);
bw = new BufferedWriter(writer);
bw.write("hehe");
bw.newLine();
bw.write("hah");
bw.flush();
}catch(Exception e){
}finally{
if(bw!=null){
try{
bw.close();
}catch(Exception e){
}
}
}
}
public static void bufferedReaderMethod(){
FileReader reader = null;
BufferedReader br = null;
StringBuilder sb = new StringBuilder();
try{
reader = new FileReader("q:/1.txt");
br = new BufferedReader(reader);
String readLine = null;
while((readLine=br.readLine())!=null){
sb.append(readLine+"\r\n");
}
sb.deleteCharAt(sb.length()-1);//两个转义字符,占两个char
sb.deleteCharAt(sb.length()-1);
}catch(Exception e){
}finally{
if(br!=null){
try{
br.close();
}catch(Exception e){
}
}
}
System.out.print(sb.toString());
}
//复制文件
public static void copyTextTest(){
FileReader reader = null;
FileWriter writer = null;
try{
reader = new FileReader("q:/1.txt");
writer = new FileWriter("q:/3.txt");
copy(reader,writer);
}catch(Exception e){
}finally{
try{
if(reader!=null)
reader.close();
if(writer!=null)
writer.close();
}catch(Exception e){
}
}
}
//复制文件1
public static void copy(FileReader reader,FileWriter writer) throws IOException{
int len = 0;
char ch[] = new char[1024];
while((len=reader.read(ch))!=-1){
writer.write(ch,0,len);
}
}
//复制文件2
public static void copy2(FileReader reader,FileWriter writer) throws IOException{
int len ;
while((len=reader.read())!=-1){
writer.write(len);
}
}
//读文件
public static void fileReaderMethod2(){
FileReader reader = null;
StringBuilder sb = new StringBuilder();
try{
reader = new FileReader("q:/1.txt");
char[] ch = new char[1024];
int len = 0;
while((len=reader.read(ch))!=-1){
sb.append(new String(ch,0,len));
}
}catch(Exception e){
}finally{
if(reader!=null){
try{
reader.close();
}catch(Exception e){
}
}
}
System.out.println(sb.toString());
}
public static void fileReaderMethod1(){
StringBuilder sb = new StringBuilder();
FileReader reader = null;
try{
reader = new FileReader("q:/1.txt");
int ch;
while((ch=reader.read())!=-1){
sb.append((char)ch);
}
}catch(Exception e){
System.out.println("打开文件异常");
}finally{
if(reader!=null){
try{
reader.close();
}catch(Exception e){
}
}
}
System.out.println(sb.toString());
}
//写出文件
public static void fileWriterMethod(){
FileWriter writer = null;
try{
writer = new FileWriter("q:/1.txt",true);
writer.write("hello boy");
writer.flush();
}catch(Exception e){
}finally{
if(writer!=null){
try{
writer.close();
}catch(Exception e){
}
}
}
}
}