黑马程序员--第二十天:io流的第三天

---------------------- ASP.Net+Android+IO开发S.Net培训、期待与您交流! ----------------------

 

/*20-1_4
File 常见方法
1.创建
	boolean createFile(); 在指定位置创建文件,如果该文件已经存在,则不创建返回false;
	static File createTempFile(String prefix, String suffix, File directory);

	boolean mkdir();创建文件夹
	boolean mkdirs(); 创建多级文件夹
2.删除
	boolean delete();
	void deleteOnExit();
3.判断
	boolean canExecute();
	boolean exists();
	boolean isDirectory(); 判断前必须先exists();
	boolean isFile();	   判断钱必须先exists();
	boolean isHidden();	   java 不能访问影藏的文件。
	boolean isAbsolute();  判断是否是绝对路径。
4.获取信息
	get-函数
	String getName();
	String getPath();
	String getParent(); 该方法返回绝对路径的文件父目录。如果获取的是相对路径,返回null。
						如果相对路径有上一层目录,则返回上一层目录。
	File getAbsoluteFile(); 文件可以不存在
	String getAbsolutePath();
	long lastModified();
	long length();
	boolean renameTo();该函数可以剪切文件。
*/

import java.io.*;

class  FileDemo
{
	public static void consMethod(){
		File f1 = new File("a.txt");//

		File f2 = new File("d:\\test\\20","b.txt");//

		File d = new File("d:\\test\\20");
		File f3 = new File(d,"c.txt");//

		sop(f1);
		sop(f2);
		sop(f3);

		File f4 = new File("d:"+File.separator+"test\\20\\d.txt");//
		sop(f4);
	}

	public static void sop(Object obj){
		System.out.println(obj);
	}

	public static void main(String[] args) 
	{
		consMethod();
		System.out.println("Hello World!");
	}
}


//20-5_6
import java.io.*;

class FileDemo2 
{
	public static void main(String[] args) 
	{
		File dir = new File("d:\\test\\20");
		File[] files = dir.listFiles();//调用listFiles() 方法的对象必须封装成目录
		for(File f : files){
			System.out.println(f.getName()+"::"+f.length());
		}
	}



	public static void listDemo_2(String[] args) 
	{
		File dir = new File("d:\\test\\20");

		String[] arr = dir.list(new FilenameFilter(){
			public boolean accept(File dir, String name){
				return name.endsWith(".java");
			}
		});

		System.out.println("len:"+arr.length);
		for(String name: arr){
			System.out.println(name);
		}
	}
}

/*
sum:
	File[] files = File.listRoots();
	String[] name = f.list();  打印文件、文件夹的名称。调用list方法的对象,必须封装了目录,该目录必须存在。
	String[] list(FilenameFilter filter);    返回文件名称
	boolean accept(File dir,String file);
	File[] listFiles();
	File[] listFiles(FilenameFilter filter); 返回文件对象
*/

//20-7_8
import java.io.*;

class FileDemo3 
{
	public static void main(String[] args) 
	{
		File dir = new File("d:\\test");
		showDir(0,dir);
	}

	public static void showDir(int n, File dir) 
	{
		//System.out.print("  ");
		System.out.println("|--"+dir);
		File[] files = dir.listFiles();
		for (File file : files)
		{				
			for(int i=0;i<=n;i++)
				System.out.print(". ");
			if(file.isDirectory())
				showDir(n+1,file);
			else
				System.out.println(file.getName());
		}
	}
}

/*
列出各级目录及文件
*/


//20-9
//删除目录
import java.io.*;

class RemoveDir 
{
	public static void main(String[] args) 
	{
		File dir = new File("d:\\test\\new folder");
		removeDir(dir);
		System.out.println("Hello World!");
	}

	public static void removeDir(File dir){
		deleteDir(0,dir);
	}

		public static void deleteDir(int n, File dir) 
	{
		//System.out.print("  ");
		File[] files = dir.listFiles();
		for (File file : files)
		{
			for(int i=0;i<=n;i++)
				System.out.print(". ");
			if(file.isDirectory())
				deleteDir(n+1,file);
			else{
				System.out.println(file.getName()+"......deleted");
				file.delete();
				}
		}
		System.out.println("|--"+dir+".....deleted");
		dir.delete();
	}
}



//20-10
//把java文件目录打印到txt的文件中

import java.io.*;
import java.util.*;

class JavaFileList 
{
	private static List<File> list = new ArrayList<File>();

	public static void main(String[] args) throws IOException
	{
		File dir = new File("d:\\test");
		PrintStream pw = new PrintStream(new FileOutputStream("d:\\test\\20\\JavaFileList.txt"));
		System.setOut(pw);
		showDir(dir);
		System.out.println(list.size());
		printArray(list);
		pw.close();
	}

	public static void printArray(List<File> list){
		for(File f : list){								//
			System.out.println(f.getAbsolutePath());	//
		}
	}

		public static void showDir(File dir) 
	{
		File[] files = dir.listFiles();
		for (File file : files)
		{				
			if(file.isDirectory())
				showDir(file);
			else{
				if(file.getName().endsWith(".java"))
					list.add(file);
				}
		}
	}
}


/*20-15
打印流:
该流提供了打印方法,可以将各种数据类型的数据都原样打印。

字节打印流:
PrintStream
构造函数可以接受的参数类型:
1.file对象。
2.字符串路径。String
3.字节输出流。OutputStream

字符打印流:
PrintWriter:
1.file对象。
2.字符串路径。String
3.字节输出流。OutputStream
4.字符输出流。Writer
*/

class  PrintWriterDemo
{
	public static void main(String[] args) 
	{
		BufferedReader bufr = 
			new BufferedReader(new InputStreamReader(System.in));

		File f = new File("a.txt");

		PrintWriter out = new PrintWriter(f);
		PrintWriter out = new PrintWriter("a.txt");
		PrintWriter out = new PrintWriter(System.out);
		PrintWriter out = new PrintWriter(new FileWriter("a.txt"),true);
		PrintWriter out = new PrintWriter(new BufferedWriter (new FileWriter("a.txt")),true);

		String line = null;
		while(!(line = bufr.readLine()).equals("over")){
			out.println(line);
//			out.flush();
		}
		
		bufr.close();
		out.close();

		System.out.println("Hello World!");
	}
}


//17-16
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:\\test\\20\\1.txt"));
		v.add(new FileInputStream("d:\\test\\20\\2.txt"));
		v.add(new FileInputStream("d:\\test\\20\\3.txt"));

		Enumeration<FileInputStream> en = v.elements();
		SequenceInputStream sis = new SequenceInputStream(en);

		FileOutputStream fos = new FileOutputStream("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();
		System.out.println("Hello World!");
	}
}


//dom4j


//20-17
import java.io.*;
import java.util.*;

class SplitFile 
{
	public static void main(String[] args) throws IOException
	{
		merge();
		System.out.println("Hello World!");
	}

	public static void merge()throws IOException{
		ArrayList<FileInputStream> al = new ArrayList<FileInputStream>();

		for (int x =1;x<=5 ;x++ )
		{
			al.add(new FileInputStream("d:\\test\\20\\"+x+".part"));
		}

		final Iterator<FileInputStream> it = al.iterator();

		//ArrayList 通过 Iterator 建立 Enumeration 
		Enumeration<FileInputStream> en = new Enumeration<FileInputStream>(){
			public boolean hasMoreElements(){
				return it.hasNext();
			}

			public FileInputStream nextElement(){
				return it.next();
			}
		};

		SequenceInputStream sis = new SequenceInputStream(en);

		FileOutputStream fos = new FileOutputStream("d:\\test\\20\\2.mp3");

		byte[] buf = new byte[1024*1024];
		int len = 0;

		while((len = sis.read(buf))!=-1){
			fos.write(buf,0,len);
		}
		fos.close();
		sis.close();
	}

	public static void splitFile() throws IOException{
		FileInputStream fis = new FileInputStream("d:\\test\\20\\1.mp3");
		FileOutputStream fos = null;

		byte[] buf = new byte[1024*1024];

		int len = 0;
		int count = 1;
		while((len = fis.read(buf))!=-1){
			fos = new FileOutputStream("d:\\test\\20\\"+(count++)+".part");
			fos.write(buf,0,len);
			fos.close();
		}

		fis.close();
	}
}


---------------------- ASP.Net+Android+IO开发S.Net培训、期待与您交流! ---------------------- 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值