1.文件读写
(1)输入流(读)——FileInputStream
1)创建FileInputStream对象
import java.io.*;
public class FileInput {
public static void main(String[] args) {
//方法一
InputStream f1; //需要引入java.io
{
try {
f1 = new FileInputStream("C:/java/hello");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
//方法二
File file = new File("C:/java/hello"); //需要引入java.io
InputStream f2;
{
try {
f2 = new FileInputStream(file);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
}
2)方法
方法 | 含义 |
void close() | 关闭输入流,并释放资源 |
int read( int r ) | 读取指定字节数的数据,返回下一个字节的数据,若到结尾则返回-1 |
int read( byte[] r ) | 读取内容,存入字节数组r,返回读取的字节数,否则返回-1 |
(2)输出流(写)——FileOutputStream
1)创建FileOutputStream对象
import java.io.*;
class FileOutPut {
public static void main(String[] args) {
//方法一
OutputStream f1;
{
try {
f1 = new FileOutputStream("C:/java.txt");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
//方法二
File file = new File("C:/java.txt");
OutputStream f2;
{
try {
f2 = new FileOutputStream(file);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
}
2)方法
方法 | 含义 |
void close() | 关闭输出流,并释放资源 |
void write( int r ) | 把指定字节数的数据写入输出流 |
void write( byte[] r ) | 把字节数组r写入输出流 |
(3)示例
import java.io.*;
public class FileStreamTest {
public static void main(String[] args) throws IOException {
byte bWrite[] = {1, 2, 3, 4, 5};
OutputStream os = new FileOutputStream("C:/java.txt");
os.write(bWrite);
os.close();
InputStream is = new FileInputStream("C:/java.txt");
int size = is.available(); //获得输入流的数据量
for (int i = 0; i < size; i++) {
System.out.println((char) is.read());
}
is.close();
}
}
ps.改进
import java.io.*;
public class FileStreamTest2 {
public static void main(String[] args) throws IOException {
//构造对象,若文件不存在,则自动创建
FileOutputStream fOut = new FileOutputStream("C://java.txt");
//构造对象,指定编码方式,默认为系统默认编码,Windows为GDK
OutputStreamWriter write = new OutputStreamWriter(fOut, "UTF-8");
write.append("1"); //写入缓冲区
write.append('2'); //刷新缓冲区,并将之前的内容写入文件
write.close(); //关闭写入流,同时将缓冲区写入文件
fOut.close();
FileInputStream fIn = new FileInputStream("C:/java.txt");
InputStreamReader reader = new InputStreamReader(fIn, "UTF-8");
StringBuffer sb = new StringBuffer();
while (reader.ready()) {
sb.append((char) reader.read());
}
reader.close();
fIn.close();
System.out.println(sb.toString());
}
}
2.目录
(1)创建目录
import java.io.File;
public class FileCreate {
public static void main(String[] args) {
String dirname = "C:/java/hello";
File f = new File(dirname);
boolean result = f.mkdir();
//创建一个文件夹,成功则返回true,若文件夹已存在,或“C://java”还不存在,则返回false
f.mkdirs();
//创建一个文件夹,及其所有父文件夹
}
}
(2)读取目录
boolean DirList(String dirName) {
File newFile = new File(dirName);
if (newFile.isDirectory()) { //判断是否是目录
String s[] = newFile.list();
for (String file : s) {
File f = new File(dirName + "/" + file);
if (f.isDirectory()) {
return true;
} else {
return false;
}
}
}
return false;
}
(3)删除文件或目录
import java.io.File;
void deleteFolder(File folder) {
//删除folder所表示的目录
//从最底层的文件开始删除
File[] fs = folder.listFiles();
if (fs != null) {
for (File f : fs) {
if (f.isDirectory()) {
deleteFolder(f);
} else {
f.delete();
//删除文件或目录,但若目录下还有其他文件,则删除失败
}
}
}
folder.delete();
}