一:删除带内容的目录
原理:从里往外删除,需要用到递归。
import java.io.*;
class RemoveDir
{
public static void main(String[] args)
{
File dir = new File("e:\\test");
removeDir(dir);
}
public static void removeDir(File dir) //传入要删除的目录文件
{
File[] file = dir.listFiles(); //listFiles()方法返回绝对路径下的目录文件,是一个字符串数组
for(int x = 0;x < file.length; x ++)
{
if(file[x].isDirectory())
removeDir(file[x]); //文件内还有文件,重复removeDir方法
else
System.out.println(file[x].toString() + ":-file-:" + file[x].delete());
}
System.out.println(dir + ":-dir-:" + dir.delete());
}
}
二:将一文件夹内的所有.Java文件路径存储到一个txt文件中。
import java.io.*;
import java.util.*;
class JavaFileList
{
public static void main(String[] args) throws IOException
{
File dir = new File("E:\\JavaProject");
List<File> list = new ArrayList<File>();
fileToList(dir, list);
//System.out.println(list.size());
File file = new File(dir,"javalist.txt");
writeToFile(list,file.toString());
}
public static void fileToList(File dir,List<File> list) //将.java文件存储到集合中的方法
{
File[] files = dir.listFiles();
for(File file : files)
{
if(file.isDirectory())
fileToList(file,list); //递归
else
{
if(file.getName().endsWith(".java"));
list.add(file);
}
}
}
public static void writeToFile(List<File> list,String JavaListFile) throws IOException //将集合中的数据写到文件夹上
{
BufferedWriter bufw = null;
try
{
bufw = new BufferedWriter(new FileWriter(JavaListFile));
for(File f : list)
{
String path = f.getAbsolutePath(); //得到绝对路径
bufw.write(path);
bufw.newLine();
bufw.flush();
}
}
catch (IOException e)
{
throw e;
}
try
{
if(bufw != null)
bufw.close();
}
catch (IOException e)
{
throw e;
}
}
}
三:Properties是集合中和IO技术相结合的集合容器。
可用于配置文件,程序试用次数达到一定时,要求其注册后再使用
import java.util.*;
import java.io.*;
class PropertiesDemo
{
public static void main(String[] args) throws IOException
{
method_2();
}
public static void method_2() throws IOException
{
Properties prop = new Properties();
FileInputStream fis = new FileInputStream("info.txt");
prop.load(fis); //加载此流中的内容到properties集合容器中
System.out.println(prop);
fis.close();
}
}
四:打印流:PrintStream
字符打印流比字节打印流多一构造函数为:字符输出流:Writer
println() :通过写入行分隔符字符串来终止当前行。
五:合并流 SequenceInputStream Split
import java.io.*;
import java.util.*;
class SequenceDemo
{
public static void main(String[] args) throws IOException
{
Vector<FileInputStream> v = new Vector<FileInputStream>();
v.add(new FileInputStream("E:\\1.txt")); //将读取到的流对象加到Vector集合中
v.add(new FileInputStream("E:\\2.txt"));
v.add(new FileInputStream("E:\\3.txt"));
Enumeration<FileInputStream> en = v.elements(); //elements()方法返回的对象Enumeration中包含FileInputStream的所有向量
SequenceInputStream sis = new SequenceInputStream(en); //传给合并流SequenceInputStream对象
FileOutputStream fos = new FileOutputStream("E:\\4.txt"); //写到指定目录
byte[] buf = new byte[1024];
int len = 0;
while((len = sis.read(buf)) != -1)
{
fos.write(buf,0,len);
}
fos.close();
sis.close();
}
}