-----------android培训、java培训、java学习型技术博客、期待与您交流!------------
1.File类:将文件或文件夹封装成对象,对文件或文件夹进行操作。
File的常用方法:
静态字段separator:目录分割符。
创建:
boolean createNewFile()
boolean mkdir()
boolean mkdirs()
删除:
boolean delete()
void deleteOnExit()
判断:
boolean canExecute()
boolean canRead()
boolean canWrite()
boolean exists()
boolean isAbsolute()
boolean isDirectory()
boolean isFile()
boolean isHidden()
获取:
long length()
String[] list()
static File[] listRoots()
String getName()
String getParent()
boolean renameTo(File dest)
方法使用代码示例:
<strong>package IOTest;
import java.io.File;
import java.io.FilenameFilter;
public class FileTest {
public static void main(String [] args){
File file = new File("D:\\day20");//</strong>封装目录。
<strong> filterName(file);//</strong>调用filterName()方法。
<strong> }
public static void filterName(File file){
String [] str = file.list(new FilenameFilter(){//</strong>过滤器通过匿名内部类实现
<strong> public boolean accept(File dir,String name){//</strong>重写filenameFilter的方法accept。
<strong> return name.endsWith("java");//</strong>如果是Java结尾的文件就返回true,存入数组中
<strong> }
});
for(String s : str){</strong>//遍历数组。
<strong> System.out.println(s);
}
}
}
</strong>
运行结果:
FileDemo.java
FileDemo2.java
FileDemo3.java
JavaFileList.java
PrintStreamDemo.java
PropertiesDemo.java
RemoveDir.java
RunCount.java
SequenceDemo.java
SplitFile.java
2.打印流:PrintStream,PrintWriter
字节打印流:构造函数可以接受:File对象:File,字符串路径:String,字节输出流:OutputStream。
字符打印流:构造函数可以接受:File对象:File,字符串路径:String,字节输出流:OutputStream,字符输出流:Writer
代码示例:
package IOTest;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
public class PrintStreamTest {
public static void main(String [] args){
BufferedReader bufr=null;
PrintWriter pw=null;
try {
bufr = new BufferedReader(new InputStreamReader(System.in));//键盘输入
pw = new PrintWriter(System.out);//使用打印流指定输出目标
String line = "";
while((line=bufr.readLine())!=null){//读一行数据
pw.println(line.toUpperCase());//将读到的字符串转成大写
pw.flush();//刷新流,不刷新不会及时显示等到关闭流的时候一块显示。
}
} catch (IOException e) {
e.printStackTrace();
}finally{
if(pw!=null)
try {
pw.close();//关闭打印流
} catch (Exception e) {
e.printStackTrace();
}
if(bufr!=null)
try {
bufr.close();//关闭输入流
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
运行结果:
avjaldj
AVJALDJ
fkajdflkda
FKAJDFLKDA
dkjlajfa
DKJLAJFA
3.序列流: SequenceInputStream(合并流)
构造函数:
SequenceInputStream(InputStream s1, InputStream s2)
将两个流合并成一个流,读完第一个流,接着读第二个流。
SequenceInputStream(Enumeration<? extends InputStream> e)
将多个流合并成一个流,要用到Enumerator,
SequenceInputStream 表示其他输入流的逻辑串联。它从输入流的有序集合开始,并从第一个输入流开始读取,直到到达文件末尾,接着从第二个输入流读取,依次类推,直到到达包含的最后一个输入流的文件末尾为止。
<strong>package IOTest;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.SequenceInputStream;
import java.util.Enumeration;
import java.util.Vector;
public class SequenceDemo {
public static void main(String[] args) throws Exception{
Vector<InputStream> v = new Vector<InputStream>();//</strong>创建vector集合,
<strong> v.add(new FileInputStream("d:\\1.txt"));//</strong>将需要合并的流存入集合中
<strong> v.add(new FileInputStream("d:\\2.txt"));
v.add(new FileInputStream("d:\\3.txt"));
v.add(new FileInputStream("d:\\4.txt"));
Enumeration<InputStream> en = v.elements();
SequenceInputStream sis = new SequenceInputStream(en);//</strong>创建合并流,将枚举中的流传入合并流中
<strong> FileOutputStream fos = new FileOutputStream("d:\\5.txt");//</strong>创建一个输出流
byte[] buf = new byte [1024];
<strong> int len =0;
while((len=sis.read(buf))!=-1){//</strong>读取合并流中的数据
<strong> fos.write(buf,0,len);//</strong>将读到数组中的数据写入到流中
<strong> fos.flush();//</strong>刷新流中的数据
<strong> }
sis.close();//</strong>关闭合并流
<strong> fos.close();//</strong>关闭输出流。
<strong> }
}</strong>
4.切割文件:
package IOTest;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class FileSplit {
public static void main(String[] args) throws Exception{
FileInputStream fis = new FileInputStream("d:\\5.txt");
FileOutputStream fos = null;
byte [] buf = new byte [1024];
int len =0;
int count = 1;
while((len=fis.read(buf))!=-1){
fos = new FileOutputStream("d:\\"+(count++)+".split");
fos.write(buf,0,len);
fos.close();
}
fis.close();
}
}
切出1M大小的文件。