JAVA——IO

 

转载篇——

原文地址——http://www.cnblogs.com/rollenholt/archive/2011/09/11/2173787.html

 

 1、创建新文件:

		File file=new File("F:\\hi.txt");
		try {
			file.createNewFile();//在F盘就会产生一个新文件。
		} catch (IOException e) {
			e.printStackTrace();
		}

 

2、File类的两个常量:

	public static void main(String[] args) {
		System.out.println(File.separator);
		System.out.println(File.pathSeparator);
	}
result:
\
;
//因为在linux和windows的分隔符不同,所以应该尽量使用File类的常量。

 

3、删除文件:

	public static void main(String[] args) {
		File file=new File("F:"+File.separator+"hi.txt");
		if(file.exists()){ //删除文件之前应该进行判断...避免出现FileNotFound
			file.delete();
		}
	}

 

 4、创建文件夹:

	public static void main(String[] args) {
		String dir="F:"+File.separator+"hello";
		File f=new File(dir);
		f.mkdir();
	}

 

5、列出一个目录的所有文件,包括隐藏文件:

	public static void main(String[] args) {
		String dir="F:"+File.separator;
		File f=new File(dir);
		String[] str=f.list(); //只会列出目录的文件,不会列出子目录下的文件...list()方法返回的是文件名,如果想要返回的是完整的包括路口的文件名,可以使用
		for(int i=0;i<str.length;i++){
			System.out.println(str[i]);
		}
	}

	public static void main(String[] args) {
		String dir="F:"+File.separator;
		File f=new File(dir);
		File[] str=f.listFiles();
		for(int i=0;i<str.length;i++){
			System.out.println(str[i]);
		}
	}

 

6、搜索指定目录的全部文件,采用递归调用的方法:

	public static void main(String[] args) {
		String dir="F:"+File.separator;
		File f=new File(dir);
		print(f);
	}
	
	public static void print(File f){
		if(f!=null){
			if(f.isDirectory()){
				File[] files=f.listFiles();
				if(files!=null){
					for(int i=0;i<files.length;i++){
						print(files[i]);
					}
				}
			}else{
				System.out.println(f);
			}
		}
	}

 

7、使用RandomAccessFile写入文件(字节流):

	public static void main(String[] args) throws IOException {
		String filename="F:"+File.separator+"hi.txt";
		File f=new File(filename);
		if(f!=null){
			if(f.exists()){
				RandomAccessFile demo=new RandomAccessFile(f,"rw");
				demo.writeBytes("wahaha");
				demo.writeInt(10);
				demo.writeBoolean(true);
				demo.writeChar('A');
				demo.close();
			}
		}
	}
//打开查看发现有乱码

 

8、OutPutStream写入文件(字节流):

	public static void main(String[] args) throws IOException {
		String filename="F:"+File.separator+"hi.txt";
		File f=new File(filename);
		if(f!=null){
			if(f.exists()){
				OutputStream out=new FileOutputStream(f); //这样会覆盖掉整个文件的内容,如果想要在文件中追加内容,构造函数应该改成new FileOutputStream(f,true);
				String str="娃哈哈啊";
				byte[] b=str.getBytes();
				out.write(b);
				out.close();
			}
		}
	}

 

9、读取文件的内容(字节流):

	public static void main(String[] args) throws IOException {
		String filename="F:"+File.separator+"hi.txt";
		File f=new File(filename);
		if(f!=null){
			if(f.exists()){
				InputStream in=new FileInputStream(f);
				byte[] b=new byte[1024];
				int len=0;
				while((len=in.read(b))>0){ // 文件读取到末尾后返回-1
					System.out.println(new String(b,0,len)); //避免产生大量空格
				}
			}
		}
	}

 

10、字符流操作文件和字节流差不多。有Writer、Reader...字节流和字符流操作文件的区别:实际上字节流在操作的时候本身是不会用到缓冲区的,是文件本身的直接操作的,但是字符流在操作的时候下后是会用到缓冲区的,是通过缓冲区来操作文件的。如果我们在使用字符流操作的时候,最后没有使用close(),那么文件中是没有内容的,因为需要刷新缓冲区。

 

11、文件复制:

	public static void main(String[] args) throws IOException {
		String filename="F:"+File.separator+"hi.txt";
		File f=new File(filename);
		if(f!=null){
			File file2=new File("F:"+File.separator,"hello.txt");
			InputStream in=new FileInputStream(f);
			OutputStream out=new FileOutputStream(file2);
			if(in!=null){
				byte[] b=new byte[1024];
				int len=0;
				while((len=in.read(b))>0){
					out.write(b, 0, len);
				}
			}
			out.close();
			in.close();
		}
	}

 

12、输入输出重定向:

	public static void main(String[] args) throws IOException {
		System.out.println("hello");
		File file=new File("F:"+File.separator+"hello.txt");
		try {
			System.setOut(new PrintStream(new FileOutputStream(file,true)));
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		System.out.println("在文件中才能看到>。。");
	}

	public static void main(String[] args) throws IOException {
		System.out.println("hello");
		File file=new File("F:"+File.separator+"hello.txt");
		try {
			System.setIn(new FileInputStream(file));
			byte[] b=new byte[1024];
			int len=0;
			len=System.in.read(b);
			System.out.println("文件中 的内容..."+new String(b,0,len));
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

 

13、合并流——将两个文件中的内容合并到另一个文件:

	public static void main(String[] args) throws IOException {
        File file1 = new File("F:" + File.separator + "hello.txt");
        File file2 = new File("F:" + File.separator + "hi.txt");
        File file3 = new File("F:" + File.separator + "ha.txt");
        InputStream input1 = new FileInputStream(file1);
        InputStream input2 = new FileInputStream(file2);
        OutputStream output = new FileOutputStream(file3);
        // 合并流
        SequenceInputStream sis = new SequenceInputStream(input1, input2);
        int temp = 0;
        while((temp = sis.read()) != -1){
            output.write(temp);
        }
        input1.close();
        input2.close();
        output.close();
        sis.close();
	}

 

14、文件压缩:

	public static void main(String[] args) throws IOException {
        File file1 = new File("F:" + File.separator + "hello.txt");
        File zipFile=new File("F:"+File.separator+"hello.zip");
        InputStream in=new FileInputStream(file1);
        ZipOutputStream zipOut=new ZipOutputStream(new FileOutputStream(zipFile));
        zipOut.putNextEntry(new ZipEntry(file1.getName()));//设置压缩文件中的名字。。。
        zipOut.setComment("-.-");
        int len=0;
        byte[] b=new byte[1024];
        while((len=in.read(b))!=-1){
        	zipOut.write(b,0,len);
        }
        in.close();
        zipOut.close();
	}

 

15、解压单个文件:

	public static void main(String[] args) throws IOException {
        File file = new File("F:" + File.separator + "hello.zip");
        File outFile = new File("F:" + File.separator + "unZipFile.txt");
        ZipFile zipFile = new ZipFile(file);
        ZipEntry entry = zipFile.getEntry("hello.txt");
        InputStream input = zipFile.getInputStream(entry);
        OutputStream output = new FileOutputStream(outFile);
        int temp = 0;
        while((temp = input.read()) != -1){
            output.write(temp);
        }
        input.close();
        output.close();
	}

 

16、解压多个文件:

        File file = new File("F:" + File.separator + "hello.zip");
        File outFile = null;
        ZipFile zipFile = new ZipFile(file);
        ZipInputStream zipInput = new ZipInputStream(new FileInputStream(file));
        ZipEntry entry = null;
        InputStream input = null;
        OutputStream output = null;
        while((entry = zipInput.getNextEntry()) != null){
            System.out.println("解压缩" + entry.getName() + "文件");
            outFile = new File("F:" + File.separator + entry.getName());
            if(!outFile.getParentFile().exists()){
                outFile.getParentFile().mkdir();
            }
            if(!outFile.exists()){
                outFile.createNewFile();
            }
            input = zipFile.getInputStream(entry);
            output = new FileOutputStream(outFile);
            int temp = 0;
            while((temp = input.read()) != -1){
                output.write(temp);
            }
            input.close();
            output.close();
        }

 

17、取得默认编码:

	public static void main(String[] args) throws IOException {
		System.out.println("系统默认编码为:" + System.getProperty("file.encoding"));
	}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值