Collection(集合) API
Set:一个无序无重复;List:一个有序可重复。
Iterators迭代器
如:
List list = new ArrayList();
Iterators elements = list.iterator();
while(elements.hasNext()) {
System.out.println(elements.next());
}
Vector向量
转换成枚举类型
Enumeration enum1 = p.elements();
while(enum1.hasMoreElements()) {
name = (String)enum1.nextElement();
System.out.println(name);
}
Hashtable 放入“键-值”关系对象。
put(参数1,参数2)
Enumeration enum1 = hash.keys();
Object obj;
while(enum1.hasMoreElements()) {
obj = enum1.nextElement();
System.out.println(obj+":"+hash.get(obj));
}
Java流
输入/输出源抽象为“流”,16位字符流。
字节流:InputStream和OutputStream。
字符流:Reader和Writer。
数据类型分节点流(低级流)和处理流(高级流),高级流和低级流联系起来使用,低级流和输入/输出设备关联。
System.exit(0)是正常退出,System.exit(1)是非正常退出。
可以通过FileInputStream和FileOutputStream来实现文件的拷贝。
如:
package com.sinojava.one;
import java.io.*;
/*
文件拷贝,将一个文件中的内容拷贝到另一个文件中
*/
public class CopyFile
{
public boolean copyFile(String src,String des)
{
File srcFile,desFile;
srcFile = new File(src);
desFile = new File(des);
FileInputStream fis = null;
FileOutputStream fos = null;
try{
desFile.createNewFile();
fis = new FileInputStream(srcFile);
fos = new FileOutputStream(desFile);
int bytesRead;
byte[] buf = new byte[4 * 1024]; // 4K buffer
while((bytesRead=fis.read(buf))!=-1){
fos.write(buf,0,bytesRead); //0到bytesRead字节
}
fos.flush();
fos.close();
fis.close();
}catch(IOException e){
System.out.println(e);
return false;
}
return true;
}
public static void main(String args[])
{
CopyFile cf = new CopyFile();
String src = args[0];
String des = args[1];
if(cf.copyFile(src,des))
{
System.out.println("拷贝成功!");
}
else
{
System.out.println("拷贝失败!");
}
}
}
缓冲流:对节点流封装,起缓冲作用,提高读写效率。
流的几种经典流向:
A-file---(bytes)FileInputStream---(bytes)DataInputStream---(String) .
A-file---FileInputStream---BufferedInputStream---DataInputStream .
A-file---FileReader---BufferedReader .
重定向标准输入/输出,使用System.setIn()和System.setOut()来改变设备。
RandomAccessFile 特殊文件流
它的接口是Data Input 和 Data Output。
有两个构造方法:
RandomAccessFile(File file,String mode)
RandomAccessFile(String file,String mode)
编码的转换(中文出现乱码现象)
如:
package com.sinojava.one;
import java.io.*;
public class AppendFile
{
public static void main(String[] args) {
String toAppend = args[0]; //从命令行随意输入字符
try{
int i = 0;
String record = new String();
String toCn = null;
//处理中文问题
toCn = new String(toAppend.getBytes("GBK"),"ISO8859_1"); //将其转换为ISO8859_1格式
RandomAccessFile rf1
= new RandomAccessFile("c:/toAppend.txt","rw"); //rw是固定写法,表示读写操作
rf1.seek(rf1.length()); //返回的是文件的长度
rf1.writeBytes(toCn+"\n"); //给文件以字节的形式写入字符串
rf1.close();
RandomAccessFile rf2 = new RandomAccessFile("c:/toAppend.txt","r"); //设置从toAppend.txt中读内容
String outCn = null;
while ((record = rf2.readLine()) != null)
{
i ++;
//处理中文问题
outCn = new String(record.getBytes("ISO8859_1"),"GBK"); //把文件中的ISO8859_1编码格式转换为GBK格式
System.out.println("Line "+i+":"+outCn); //最后将读出来的内容打印到命令控制台上
}
rf2.close();
}catch(Exception e)
{
e.printStackTrace();
}
}
}