java的IO和File及python中的实现方法

java

  • java的IO

写入数据FileOutputStream的使用:

FileOutputStream类用来创建一个文件(如果文件不存在)并向文件中写入数据,而文件存在的情况下直接向该文件写入数据。

        //out流
	//打开hello world.txt文件,准备存储内容
	FileOutputStream fout = new FileOutputStream("d:/hello.txt");
	//为防止乱码调用OutputStreamWriter类型
	OutputStreamWriter w = new OutputStreamWriter(fout, "utf-8");
	//向文件中打印‘good hello’
	w.append("good hello");
	//关闭文件,释放资源
	w.close();

读取数据FileInputStream 的使用:

FileInputStream 流用于从文件读取数据,它的对象可以用关键字 new 来创建,创建对象后读取方法可分为2种:

方法一:

	//in流 方法一
	//打开hello world.txt文件,准备打印内容
	FileInputStream fin = new FileInputStream("d:/hello.txt");
	//计算文件字符串长度
	int inum = fin.available();
	//打印字符串
	for (int i = 0; i < inum; i++) {
		System.out.print((char) fin.read());
	}
	//关闭文件,释放资源
	fin.close();

方法二:

	//in流 方法二
	//打开hello world.txt文件,准备打印内容
	FileInputStream fin = new FileInputStream("d:/hello.txt");
	//为防止乱码调用InputStreamReader类型
	InputStreamReader r = new InputStreamReader(fin,"utf-8");
	//准备一个buffer缓存字符串
	StringBuffer inum = new StringBuffer();
	while (r.ready()) {
		//将文件内容字符传入inum缓存字符串中
		inum.append((char)r.read());
	}
	System.out.println(inum);
	//关闭文件,释放资源
	r.close();

那么从创建hello.txt到写入内容在读取内容的过程如下:

package com.java.first;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;

public class File {
	
	public static void main(String[] args) throws Exception {
		//out流
		//打开hello world.txt文件,准备存储内容
		FileOutputStream fout = new FileOutputStream("d:/hello.txt");
		//为防止乱码调用OutputStreamWriter类型
		OutputStreamWriter w = new OutputStreamWriter(fout, "utf-8");
		//向文件中打印‘good hello’
		w.append("good hello");
		//关闭文件,释放资源
		w.close();
		
		
		//in流
		//打开hello world.txt文件,准备打印内容
		FileInputStream fin = new FileInputStream("d:/hello.txt");
		//计算文件字符串长度
		int inum = fin.available();//这里的fin.available()=10,=>inum=10,但是执行一次fin.read()后,fin.available()=9
		//打印字符串
		for (int i = 0; i < inum; i++) {//由于fin.read()的原因,所以不能写成for (int i = 0; i < fin.available(); i++)的形式
			System.out.print((char) fin.read());
		}
		//关闭文件,释放资源
		fin.close();
		
	}
}
  • java中关于目录的创建和删除

创建目录

	//创建目录d:/java/hadoop
	File d = new File("d:/java/hadoop");
	d.mkdirs();

当然,大多数情况下,为了保证代码的可读性,我们一般写成一下形式

	//创建目录d:/java/hadoop
	String dirname = "d:/java/hadoop";
	File d = new File(dirname);
	d.mkdirs();

删除目录

	//删除目录d:/java/hadoop
	String dirname = "d:/java/hadoop";
	File d = new File(dirname);
	d.delete();

特别要注意的是,如果目录下面存在文件或者其他子目录的话,该目录是删除不掉的

比如,java目录下有2个目录文件和一个文本文件

那么

	//删除目录d:/java,文件d:/java/hadoop存在
	String dirname = "d:/java";
	File d = new File(dirname);
	d.delete();

虽然删除d:/java的程序不会报错,但是因为d:/java/hadoop存在,所以在实际中并没有删除java目录文件

因此删掉java目录的正确做法是删除java下的所有文件再删除java目录

删除java下的所有文件

	//刪除java目录下的所有文件
	File d = new File("d:/java");
	String s[] = d.list();                 //目录的遍历过程,将java下的目录和文件名称存储在s[]列表中
	for (int i = 0; i < s.length; i++) {
		String dirnames = "d:/java/" + s[i];
		File d1 = new File(dirnames);
		d1.delete();			

再删除java目录就不会有问题了

创建目录和删除主要过程:

package com.java.first;

import java.io.File;


public class App_1 {
	public static void main(String[] args)  {
		//创建目录d:/java/hadoop
		String dirname = "d:/java/hadoop";
		File d1 = new File(dirname);
		d1.mkdirs();
		
		//刪除java目录下的所有文件
		File d = new File("d:/java");
		String s[] = d.list();
		for (int i = 0; i < s.length; i++) {
			String dirnames = "d:/java/" + s[i];
			File d_num = new File(dirnames);
			d_num.delete();
		}
	}
}
  • java下目录的判断问题
package com.java.first;

import java.io.File;
import java.io.FileOutputStream;

public class Mkdirs {
	public static void main(String[] args) throws Exception  {
		String dirnames = "d:/java";
		File d1 = new File(dirnames+"/hadoop");
		File d2 = new File(dirnames+"/hello.txt");
		//创建一个hadoop目录
		d1.mkdirs();
		//创建一个hello.txt文件
		FileOutputStream fout = new FileOutputStream(d2);
		
		//判断目录和文件
		String dirname = "d:/java";
		File d = new File(dirname);
		if (d.isDirectory()) {
			System.out.println(dirname + "是个目录");
			String s[] = d.list();
			for (int i = 0; i < d.list().length; i++) {
				String dirname_num = dirname + "/" + s[i];
				File d_num = new File(dirname_num);
				if (d_num.isDirectory()) {
					System.out.println(dirname_num + "是个目录");
				} else {
					System.out.println(dirname_num + "是个文件");
				}
			}
		} else {
			System.out.println(dirname+"不是目录");
		}
	}
}

python和java对比过程

  • 文件的读写

在python中创建一个文件并且写入过程就显得很简单了

#打开一个文件
fo = open("d:/hello.txt","w")
#写入hello world
fo.write("hello world")
#关闭文件
fo.close()

读取过程

#读取文件内容
fo = open("d:/hello.txt","r+")
str = fo.read()
print(str)
fo.close()

就整个过程而言,python的代码简洁很多,不过java的优势是资源占用少

#!/usr/bin/python
# -*- coding: UTF-8 -*-

#打开一个文件
fo = open("d:/hello.txt","w")
#写入hello world
fo.write("hello world")
#关闭文件
fo.close()

#读取文件内容
fo = open("d:/hello.txt","r+")
str = fo.read()
print(str)
fo.close()
  • 目录的创建和删除

创建mkdir()

import os
os.mkdir("d:/java")

值得注意的是,python中并没有mkdirs()函数,所以我们不能够在java不存在的情况下直接创建d:/java/hello目录

删除rmdir()

import os
os.rmdir("d:/java")

以上就是java和python中IO流和file的主要对比

完!

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值