1. Java中I/O的InputStream流
class="java">
1. 使用InputStream流读取文件内容
public class InputStreamTest1 {
public static void main(String[] args) throws Exception{
InputStream is = new FileInputStream("c:/hello.txt");
byte[] buffer = new byte[200];
int length = 0;
while(-1 != (length = is.read(buffer, 0, 200))){
String str = new String(buffer,0, length);
System.out.println(str);
}
is.close();
}
}
2. 使用InputStream流遍历文件夹结构,并排序
import java.io.File;
import java.util.ArrayList;
public class ListAllTest {
// 用于判断目录或文件所处的层次
private static int time;
// 递归的方法
public static void deepList(File file){
if (file.isFile() || 0 == file.listFiles().length) {
return;
}
else {
File[] files = file.listFiles();
files = sort(files);
for (File f : files){
StringBuffer output = new StringBuffer();
if(f.isFile()){
output.append(getTabs(time));
output.append(f.getName());
}else {
output.append(getTabs(time));
output.append(f.getName());
// 标识目录用,没有实际意义
output.append("\\");
}
System.out.println(output);
if(f.isDirectory()){
time++;
deepList(f);
time--;
}
}
}
}
// 整理文件数组,使得目录排在文件之前
private static File[] sort(File[] files) {
ArrayList<File> sorted = new ArrayList<File>();
// 寻找到所有的目录
for (File f : files){
if (f.isDirectory()){
sorted.add(f);
}
}
// 寻找到所有的文件
for (File f : files){
if (f.isFile()){
sorted.add(f);
}
}
return sorted.toArray(new File[files.length]);
}
// 判断需要加多少 tab的方法
private static String getTabs(int time){
StringBuffer buffer = new StringBuffer();
for (int i = 0; i < time; i++) {
buffer.append("\t");
}
return buffer.toString();
}
public static void main(String[] args) {
File file = new File("C:\\Documents and Settings\\Administrator\\My Documents\\JDdongdong\\JIMPersonal\\流年andrew");
deepList(file);
}
}
运行结果:
data\
Message.db
Profile.db
HeadImage\
Image\
7CCFE52D-BBCC-48DA-A6F9-29251E4AC52B.png
Product\
5459a447N250ba8e8.jpg
55093e75N1743a6f2.jpg
RecvFile\
Temp\