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的主要对比
完!