File類
- 用來將文件或者文件夾封裝成對象
- 方便對文件與文件夾進行操作
- File對象可以作爲參數傳遞給流的構造函數
- 瞭解File類中的常用方法
文件過濾
import java.io.*;
class FileDemo2
{
public static void main(String[] args)
{
File dir = new File("d:\\");
FilenameFilter ff=new FilenameFilter(){
///dir代表指定的目錄,name 代表目錄內的文件或文件夾名
public boolean accept(File dir,String name)
{
/* if((name.indexOf("txt"))!=-1)
return true;
return false; */
return name.endsWith(".txt");
}
};
String[] arr=dir.list(ff);
System.out.println("len:"+arr.length);
for(String name : arr)
{
System.out.println(name);
}
}
}
遞歸
import java.io.*;
class FileDemo3
{
public static void main(String[] args)
{
File dir = new File("d:\\test");
showDir(dir);
}
public static void showDir(File dir)
{
System.out.println(dir);
File[] files = dir.listFiles();
for(int x=0;x<files.length;x++)
{
if(files[x].isDirectory())
showDir(files[x]);
else
System.out.println(files[x]);
}
}
}
Properties 簡述
dom4j 工具更簡便。
Properties 是 hashtable的子類
也就是說它具備了map集合的特點。而且它裏邊存儲的鍵值對都是字符串。
是集合中和IO技術相結合的集合容器
該對象的特點:可以用於鍵值對形式的配置文件。
Properties存取
import java.io.*;
import java.util.*;
class PropertiesDemo
{
public static void main(String[] args)
{
setAndGet();
}
public static void setAndGet()
{
Properties pro=new Properties();
pro.setProperty("文本顏色","黑色");
pro.setProperty("文本字體","仿宋");
//System.out.println(pro);
String value=pro.getProperty("文本顏色");
for(String s:pro.stringPropertyNames())
{
System.out.println(s+":"+pro.getProperty(s));
}
}
}
Properties 存取配置文件
//將info.txt中鍵值數據存到集合中進行操作.
public static void loadDemo() throws IOException
{
Properties prop=new Properties();
FileInputStream fis=new FileInputStream("d:\\sysinfo.txt");
prop.load(fis);
prop.list(System.out);
prop.setProperty("user.timezone","zh");
//System.out.println(prop);
FileOutputStream fos=new FileOutputStream("d:\\sysinfo.txt");
prop.store(fos,"comments");
fis.close();
fos.close();
}
PrintStream PrintWriter
- 打印流:
- 該流提供了打印方法,可以將各種數據類型的數據都原樣打印。
- 字節打印流
- PrintStream
構造函數可以接受的參數類型:
- file對象 File
- 字符串路徑 String
- 字節輸出流 OutputStream
字符打印流
- PrintWriter
- file對象
- 字符串路徑
- 字節輸出流
- 字符輸出流
import java.io.*;
class PrintStreamDemo
{
public static void main(String[] args) throws IOException
{
BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));
//PrintWriter out = new PrintWriter(System.out,true);
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("d:\\tmp.txt")),true);
String line=null;
while((line=bufr.readLine())!=null)
{
if("over".equals(line))
break;
out.println(line.toUpperCase());
//out.flush();
}
bufr.close();
out.close();
}
}
序列流SequenceInputStream
SequenceInputStream 表示其他輸入流的邏輯串聯。它從輸入流的有序集合開始,並從第一個輸入流開始讀取,直到到達文件末尾,接着從第二個輸入流讀取,依次類推,直到到達包含的最後一個輸入流的文件末尾爲止。
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("d:\\1.txt"));
v.add(new FileInputStream("d:\\2.txt"));
v.add(new FileInputStream("d:\\3.txt"));
Enumeration<FileInputStream> en = v.elements();
SequenceInputStream sis = new SequenceInputStream(en);
FileOutputStream fos = new FileOutputStream("d:\\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();
}
}