JAVA I/O操作
1.File操作
a.创建文件:
File file = new File();//括号内可根相应的路径参数
File.separator用作文件夹的间隔符,这样可以考虑到windows和linux通用性;
b.InputStream流的形式访问文件:
BufferedInputStream in=new BufferedInputStream(new FileInputStream("TokenTest.java"));//此时转换为InputStream流
PrintStream out=new PrintStream(new BufferedOutputStream(
new FileOutputStream("test.java")));
进行文件流的输出:
int i;
while((i=br.read())!=-1)
System.out.println(s);
out.close();
c.Reader/Writer读取字符的形式获取文件://通过InputStreamReader进行转换
BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream(inputfile)));
String data;
while((data = br.readLine())!=null)
{
System.out.println(data);
}
//也可直接用FileReader的形式获取
BufferedReader br = new BufferedReader(new FileReader("TokenTest.java"));
d.文件的一些操作
创建目录:file.mkdir();//创建目录
剪切转移文件:file.renameto(new File(temppath+list[i]))//相当于剪切文件
显示下属文件:String[] list = file.list();
System.out.println(list[i]);
//注意字符串的操作可以用于判断文件的类型如list[i].endWith(".java")
2.进行相应的String类型的字符流操作
//小结:
//String类型即直接用StringReader转换为字符流,也可转换为字节数祖转换为DataInputStream流
3.字节流与字符流的相关介绍
最早的JAVA 的API提供的是字节流,以InputStream和OutputStream为主,进行派生,如ObjectInputStream,DataInputStream,BufferedInputStream,FileInputStream等等
eg:DataInputStream in=new DataInputStream(new ByteArrayInputStream(string.getbytes()));
int i=0;
while((i=in.read)!=-1)
System.out.println((char)i);
随着国际化的出现,需要更多的对国际进行支持,于是出现了Reader和Writer类型的字符处理,如StringReader,FileReader,BufferedReader,FileWriter,BufferedWriter,PrintWriter等
eg:BufferedReader in4 = new BufferedReader(new StringReader(s2));
PrintWriter out1 = new PrintWriter(new BufferedWriter(
new FileWriter("IODemo.text")));
在字节流和字符流之间可以实现转换
BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream(inputfile)));
String data;
while((data = br.readLine())!=null)
{
System.out.println(data);
}
4.StringTokenizer与StreamTokenizer
a. 二者都根据一定规则(主要为分隔符或词组)获取词组
b.StringTokenizer 与split类似,其操作如下
String data = "I-love-you"
StringTokenizer st = new StringTokenizer(data,"-");
String[] list=data.split("-");
c.StreamTokenizer较为复杂,需要设置相应的词祖范围(或者默认),在判断输出时不能为TT_EOF,并可根据相应的词组形式进行输出
5.File的renameTo 与delete方法
delete()直接删除,需要花费一点时间,500M大概32ms
renameTo()方法在跨文件系统的时候会有问题,可以用FileUtil的copyFile(srcFile,destFile)文件来解决这个问题
6.Java对象转换为字节流
1):ByteArrayOutputStream bytes = new ByteArrayOutputStream();
ObjectOutputStream objout = new ObjectOutputStream(bytes);
objout.writeObject(obj);
byte[] data = bytes.toByteArray();
2:)byte[] data = multiSegment.read();
ObjectInputStream objin = new ObjectInputStream(new ByteArrayInputStream(data));
return objin.readObject();