java.io-java编程中的文件操作

作为一名习惯了shell编程的工程师,写java最麻烦就是IO操作。曾经一个 > file_name 就完成了写操作,一个 < file_name  或者 cat file_name 就完成了读操作,java的读写文件真台让我头疼了。索性总结下,仅供参考。

写在前面的话:
java编程里面对于文件的操作,我分成三种:
1、目录操作
2、文件字符型操作
3、文件流式操作
对于目录,其实无非两个:是否存在,创建与删除。分别对应于File的fs.exists/fs.mkdir/fs.delete;
文件字符型操作,其实这个应用场景很少,仅对于ascii文件有效,文件操作,无法两个:读写。分别对应于File的fs.read/fs.write;
最后是文件流操作,这个应用场景非常广泛,所有文件都可以用。同样,无非两个:读写。分别对应于File的fs.read/fs.write。
文件操作中,字符型和流式操作,读都一样fs.read,写有所不同,确切的说是读出来后怎么存放,
字符型需要存放在char数组中,流式存放在byte数组中。然后再一组一组的写。
当然,如果不存放,直接写,那就没有区别了。
可以参看下面简单的例子!
最后,还有很多其他的方法,在我看来对于入门来说太过奢华,不实用,就不说了。

#Java编程-文件IO操作-读写
package com.file.qq;

import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Arrays;

public class fileInOutput {

static FileWriter fw = null;
static FileReader fr = null;
static File dir = null;
static File file = null;

public static void main(String[] args) throws IOException {

dir = new File("D:/test");

if (!dir.exists()) {
dir.mkdir();
}

file = new File("D:/test/test.txt");
fw = new FileWriter("D:/test/test.txt");
fr = new FileReader("D:/test/test.txt");
fw.write("Hello,Word!");

fw.close();

char[] chars = new char[256];
int bs = fr.read(chars);
char[] arr = Arrays.copyOf(chars, bs);
String str = new String(arr);
System.out.println(str);

fr.close();

if (file.exists()) {
file.delete();
}

if (dir.exists()) {
dir.delete();
}

}

}


#Java编程-文件IO操作-文件读写拷贝
package com.file.qq;

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class fileInOutput {

static FileWriter fw = null;
static FileReader fr = null;

public static void main(String[] args) throws IOException {

fr = new FileReader("D:/test/test.txt");
fw = new FileWriter("D:/test/test1.txt");

// int c = 0;
// while (-1 != (c = fr.read())) {
// fw.write(c);
// }

char[] chars = new char[4];
int len = 0;
while (-1 != (len = fr.read(chars))) {
fw.write(chars, 0, len);
}

fr.close();
fw.flush();
fw.close();
}
}

#Java编程-文件IO操作-文件读写拷贝-流式(所有含有Stream的都是流)
package com.file.qq;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class fileInOutput {

public static void main(String[] args) throws IOException {

FileInputStream fis = null;
FileOutputStream fos = null;

fos = new FileOutputStream("D:/test/test1.txt");
fis = new FileInputStream("D:/test/test.txt");

// int c = 0;
// while (-1 != (c = fis.read())) {
// fos.write(c);
// }

//将字符数组中的字符写入到输出流,第二个参数表示从字符数组的哪个索引处开始取字符,第三个参数表示写多少个字符
byte[] bs = new byte[256];
int len = 0;
while (-1 != (len = fis.read(bs))) {
fos.write(bs, 0, len);
}

fis.close();
fos.flush();
fos.close();
}

}

原文地址:https://www.cnblogs.com/smallfishy/p/12917194.html