File类
输入 输出流
File类
构造方法:
File(String pathname)
File(String parent, String child)
File(File parent, String child)
作用
查看文件属性:canRead(), isFile(), lastModified()
创建或删除目录:mkdir(),delete()
列出目录下的所有文件:list()
判断文件是否存在:exists()
重新命名文件:renameTo()
输入 输出流
InputStream
FileInputStream
OutputStream
FileOutputStream
Reader
FileReader
Writer
FileWriter
InputStream类
方法 | 描述 |
---|---|
read() | 将数据读入流中 |
skip() | 跳过流中的若干字节 |
available() | 返回当前流中的可用字节 |
mark() | 在流中标记一个位置 |
reset() | 返回到流中的标记位置 |
markSupported() | 返回一个boolean值,描述流是否支持标记和复位 |
close() | 关闭流 |
OutputStream类
方法 | 描述 |
---|---|
write() | 写数据到流 |
flush() | 强制将被缓冲的内容写到输出 |
close() | 关闭流 |
Reader与Writer类
/**
* 本例子演示了如何用面向byte的方式 读取、写入文件
* @author Administrator
*
*/
public class ReadWriteFileByteDemo {
public static int CHUNK_SIZE = 4096;
public ReadWriteFileByteDemo() {
// TODO Auto-generated constructor stub
}
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
copyFile("D:\\elipse\\course\\src.jpg", "D:\\elipse\\course\\dest.jpg");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 复制IO流
* @param in
* @param out
* @throws IOException
*/
public static void copyIO(InputStream in, OutputStream out) throws IOException {
byte[] buf = new byte[CHUNK_SIZE];
/**
* 从输入流读取内容的典型方法
*/
int len = in.read(buf);
while (len != -1) {
out.write(buf, 0, len);
len = in.read(buf);
}
}
/**
* 复制文件
* @param fsrc
* @param fdest
* @throws IOException
*/
public static void copyFile(String fsrc, String fdest) throws IOException {
InputStream in=null;
OutputStream out=null;
try {
in = new FileInputStream(fsrc);
out = new FileOutputStream(fdest, true);
copyIO(in, out);
} finally {
close(in);
close(out);
}
}
/**
* 关闭一个输入 输出流
* @param inout
*/
public static void close(Closeable inout) {
if (inout != null) {
try {
inout.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
/**
* 本例子演示了如何使用char的方式 读取、写入文件
* @author Administrator
*
*/
public class ReadWriteFileCharDemo {
public static int CHUNK_SIZE = 4096;
public ReadWriteFileCharDemo() {
// TODO Auto-generated constructor stub
}
public static void main(String[] args) {
try {
String s = readFile("D:/elipse/course/demo.txt");
System.out.println(s);
// List<String> list=readLine("D:/elipse/course/red.txt");
// for(int i=0;i<list.size();i++) {
// System.out.println(list.get(i));
// }
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 从一个文件中读取字符串
* @param fsrc
* @return
* @throws IOException
*/
public static String readFile(String fsrc) throws IOException {
Reader reader = null;
try {
StringBuffer buf = new StringBuffer();
char[] chars = new char[CHUNK_SIZE];
reader = new FileReader(fsrc);
int readed = reader.read(chars);
while (readed != -1) {
buf.append(chars, 0, readed);
readed = reader.read(chars);
}
return buf.toString();
} finally {
close(reader);
}
}
/**
* 从一个文本文件中,一次读取一行,放到list中
* @param fsrc
* @return
* @throws IOException
*/
public static List<String> readLine(String fsrc) throws IOException {
Reader reader = null;
LineNumberReader lineReader = null;
try {
reader = new FileReader(fsrc);
lineReader = new LineNumberReader(reader);
String line = lineReader.readLine();
List<String> lines = new ArrayList<String>();
while (line != null) {
lines.add(line);
line = lineReader.readLine();
}
return lines;
} finally {
close(lineReader);
close(reader);
}
}
/**
* 把字符串写到文件中
* @param fileName
* @param content
* @throws IOException
*/
public void writeFile(String fileName, String content) throws IOException {
OutputStream out = null;
try {
out = new FileOutputStream(fileName, false);
out.write(content.getBytes());
out.flush();
} finally {
close(out);
}
}
/**
* 关闭输入输入流
* @param inout
*/
public static void close(Closeable inout) {
if (inout != null) {
try {
inout.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
流有两种基本形式:
输入流
和输出流
,根据程序是作为数据流的目的端
还是源端
来划分。程序首先要打开一个流
,才能与数据文件进行通信。通过输入流,程序可以从数据文件读取数据,但不可向输入流中写入数据;反之,通过输出流,程序可以向数据文件中写入数据。程序与其他设备间的I/O也可以使用流,这时可将设备看作是一个数据文件。