Java学习笔记-File


-----------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大小的文件。


-----------android培训java培训、java学习型技术博客、期待与您交流!------------ 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值