------- android培训、java培训、期待与您交流! ------……
一:操作文件的类 File :
File类是唯一与文件本身有关的类。
File 类的常用方法有:
1.File(string path) 构造方法传入文件路径
2.separator 分隔符
3.boolean createNewFile() 创建新文件
4.delete 删除文件
5.exists() 判断文件是否存在
6.isDirectory() 判断是否是目录
7.length() 返回文件的大小
8.string【】 list() 列出指定目录的内容,只列出名称
9.File【 】 ListFiles() 列出全部内容包括路径
10.boolean mkdir() 创建一个目录
11.boolean renameTo() 改变名称
File 针对文件本身进行操作,RandomAccessFile 类则对文件内容进行操作。
RandomAccessFile 类一些方法:
1.RandomAccessFile(File f,string mode) 接收file对象,指定操作路径,设置模式
“r”只读, “w” 只写, “rw” 读写
2.RandomAccessFile(string path,string mode) 不接受对象,直接传路径
3.read(byte【】) 将内容读到字节数组中
4.readByte() 读取一个字节
5.readInt() 读取一个数字
6.writeInt()写入一个数字
例子关键代码:
public static void main(String[] args) {
listF(new File("d:/test"), 0);
}
public static void listF(File f, int level) {
String preStr = "";
for(int i=0; i<level; i++) preStr += " ";
System.out.println(preStr + f.getName());
if(f.isDirectory()) {
File[] files = f.listFiles();
for(File cf : files) listF(cf, level + 1);
二。IO:
IO主要有字节流和字符流两大类。其中每类又有输入和输出操作。
字节流主要outputStream 类和 inputStream 类来操作。
字符流主要用reader类 和writer 类来操作。
1.字节流:
字节流outputStream类和InputStream 类都是抽象类因此必须使用它们的子类进行实例化 FileOutputStream 类和 FileInputStream 类。
常用方法有:
1.close() 关闭
2.flush()刷新缓冲区
3.write() 写入
4.FileOutputStream(File file, boolean apend) 是否追加内容
5.FileOutputStream(File file) 不追加
6.FileInputStream(file )
7.read()读取
8.int available() 返回输入文件的大小
一些用法:
要构造一个FileInputStream,所关联的文件必须存在而且是可读的。
FileInputStream fis = new FileInputStream(" ");
要构造一个FileOutputStream,而输出文件已经存在,则它将被覆盖。
FIleOutputStream fos= new FileOutputStream("results.dat");
要想以追加的方式写,则需要一个额外的参数,如:
FileOutputStream outfile =new FileOutputStream("results.dat" ,true);
2.字符流
write 和read 也是抽象类 ,所有常用的是子类 FileWrite 类和 Fileread类
常用方法有:
1.close() 关闭
2.flush() 刷新缓冲
3.write() 写入
4.read() 读取
一些代码:
FileWriterfw=null;
fw=newFileWriter("D:/test.txt");
fw.write("
fw.flush();
fw.write("
复制文件:
FileReader fr = null;
FileWriter fw = null;
fr= new FileReader("demo.txt");
fw= new FileWriter("copyDemo.txt");
char[]buf = new char[1024];
intlen = 0;
while((len=fr.read(buf)) != -1)
fw.write(buf,0,len);
字符流读取的两种方式:
第一种读取方式 一次读一个字符
FileReader fr = new FileReader("Demo.txt");
int line=0;
while ((line=fr.read())!=-1)
{
sop((char)ch);
}
第二种读取方式
FileReader fr = newFileReader("Demo.txt"); //把Demo.txt中的数据读到控制台
char[] buf = new char[1024];
int len=0;
while((len=fr.read(buf))!=-1)
{
sop("num="+num+"...."+new String(buf,0,len));
}
三: 缓冲流
缓冲流要套接在相应的节点流之上,提高了读写的效率。
字符流缓冲区:
缓冲区的出现提高了对流的操作效率。
原理:其实就是将数组进行封装。
对应的对象
BufferedWriter
特有方法newLine(),跨平台的换行符。
BufferedReader
特有方法readLine(),一次读一行,到行标记时,将行标记之前的字符数据作为字符串返回,读到末尾返回null。
说明在使用缓冲区对象时,要明确,缓冲的存在是为了增强流的功能而存在,所以在建立缓冲区对象时,要先有流对象存在。其实缓冲区内部就是在使用流对象的方法,只不过加入了数组对数据进行了临时存储,为了提高操作数据的效率
关键代码:
BufferedWriter bufw=newBufferedWriter(new FileWriter(“test.txt”));
bufw.write(“数据”);
bufw.flush();
bufw.close();
BufferedReader bufr=newBufferedReader(new FileReader(“test.txt”));
String line=null;
while((line=bufr.readLine())!=null){
system.out.println(line);
}
bufr.close()
四:转换流
字节流和字符流之间的桥梁
该流对象可以对读取到的字节数据进行指定编码表的编码转换。
InputStreamReader需要和InputStream套接
OutputStreamWriter需要和OutputStream套接
注意:这两个流对象是字符流体系中的成员,它们有转换的作用,而本身又是字符流,所以在new的时候需要传入字节流对象
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(文件路径);
构造函数
InputStreamReader(InputStream)通过该构造函数初始化,使用的是系统默认的编码表GBK。
InputStreamReader(InputStream,Stringcharset)通过该构造函数初始化,可以通过charset参数指定编码。
OutputStreamWriter(OutputStream)使用的是系统默认的编码表GBK。
OutputStreamWriter(OutputSream,Stringcharset)通过该构造函数初始化,可以通过参数charset指定编码。
五:数据流与字节数组流:
数据流主要为实现可以存取Java原始数据类型如long,boolean
数据流是字节流
DataInputStream需要和InputStream套接
DataOutputStream需要和OutputStream套接
DataInputStream方法:readBoolean() readInt() read()
readUTF()网络传输常用方法读一个Unicode字符串
DataOutputStream方法与DataInputStream基本对应为写的方法
ByteArrayOutputStream baos = new ByteArrayOutputStream()此方法为获取一个字节数组方法返回字节数组
baos.toByteArray()此方法获取字节数组占了多少字节