IO流
Java的集合框架: 类和接口存在于java.util包中.
Java的IO: 类和接口存在于java.io包中.
学习方法: 文档在手,天下我有!
-----------------------------------------------------------------------------------------
讲IO操作之前,必须要先讲File类(文件/目录).
File类介绍和路径分隔符: File类是IO包中唯一表示磁盘文件和磁盘目录的对象的路径. 该类包含了创建,删除文件,重命名文件,判断文件读写权限以及文件是否存在,查询等功能方法. 只能设置和获取文件本身的信息,不能设置和获取文件的内容. -----------------------------------------------------------------------------------------
Java做开发: 一次编写,到处运行.
Unix: 严格区分大小写.
WIndows: 默认情况下是不区分大小写的.
路径分隔符,属性分隔符:
Unix: 使用”/”,来分割目录路径.
使用“:”来分割属性.
Windows: 使用”\”,来分割目录路径.但是在Java中一个”\”表示转义,在Windows平台的Java代码中表示一个路径,就 得使用两个\\. 但是Windows支持/.
使用;来分割属性.
-----------------------------------------------------------------------------------------
因为我们不知道以后运行的系统平台是什么,就不知道该如何编写分隔符的问题,因此在File类中提供了两类常量,分别来表示路径分隔符和属性分隔符.
package io;
import java.io.File;
import java.io.IOException;
import java.util.Date;
public class file {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
String path=File.separator;
char s=File.separatorChar;
System.out.println(path+","+s);
/*
* 获取File路径和检测状态:
*
操作File路径和名称:
File getAbsoluteFile() :获取绝对路径
String getAbsolutePath():获取绝对路径
String getPath() :获取文件路径
String getName() :获取文件名称
File getParentFile():获取上级目录文件
String getParent() :获取上级目录路径
检测File状态的方法:
boolean canExecute() :判断是否是可执行文件
boolean canRead() :判断该文件是否可读
boolean canWrite():判断该文件是否可写
boolean isHidden():判断该文件是否是隐藏文件
long lastModified():判断该文件的最后修改时间
long length():获取该文件的长度大小(单位字节)
* */
File f=new File("E:\\abc\\123\\wode.txt");
String c=f.getAbsolutePath();
File d=f.getAbsoluteFile();
System.out.println(c+" "+d);
System.out.println(f.getPath()+" "+f.getName());
System.out.println(f.getParentFile()+" "+f.getParent());
System.out.println(f.canExecute()+" "+f.canRead()+" "+f.canWrite()+" "+f.isHidden());
Date h=new Date(f.lastModified());
System.out.println(h.toLocaleString()+" "+f.length());
/*
* File类中方法-文件操作:
boolean isFile() :是否是文件
boolean createNewFile() :创建新的文件
static File createTempFile(String prefix, String suffix) :创建临时文件
boolean delete() :删除文件
void deleteOnExit() :在JVM停止时删除文件
boolean exists():判断文件是否存在
boolean renameTo(File dest) :重新修改名称
---------------------------------------------------------------------
File类中方法-目录操作
boolean isDirectory() :判断是否是目录
boolean mkdir() :创建当前目录
boolean mkdirs() :创建当前目录和上级目录
String[] list() :列出所有的文件名
File[] listFiles() :列出所有文件对象
static File[] listRoots() :列出系统盘符
*
* */
System.out.println(f.isFile());
File dir=new File("E:\\abc\\123");
File f1=new File(dir,"wode.css");
if(!f1.exists())
f1.createNewFile();
else f1.renameTo(new File(dir,"123.js"));
System.out.println(f1.isDirectory());
File dir1=new File("D:\\gh\\123");
boolean ret=dir1.mkdirs(); //mkdir只能创建一级目录
System.out.println(ret);
System.out.println("------------------");
String[] file=dir.list();
for(String ele:file)
{
System.out.println(ele);
}
System.out.println("------------------");
File[] file1=dir.listFiles();
for(File ele1:file1)
{
System.out.println(ele1);
}
File[] root=File.listRoots();
for(File ro:root)
{
System.out.println(ro);
}
System.out.println("--------------");
/*递归操作*/
File dir3=new File("E:\\abc");
listall(dir3);
}
/*递归算法*/
private static void listall(File f) {
// TODO Auto-generated method stub
File[] fs=f.listFiles();
for(File fk:fs)
{
System.out.println(fk);
if(fk.isDirectory())
listall(fk);
}
}
}
package io;
import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class fenceng {
public static void main(String[] args) {
// TODO Auto-generated method stub
File f=new File("E:\\abc\\123\\wode.txt");
List<String> p=new ArrayList<>();
listall(p,f);
System.out.println(p);
Collections.reverse(p);
System.out.println(p);
StringBuilder sd=new StringBuilder(100);
for (String ele : p) {
sd.append(ele).append(">");
}
sd.deleteCharAt(sd.length()-1);
System.out.println(sd);
}
private static void listall(List<String> p, File f) {
// TODO Auto-generated method stub
if(!"".equals(f.getParentFile().getName()))
{
p.add(f.getParentFile().getName());
}
if(f.getParentFile().getParentFile()!=null) //注意
{
listall( p,f.getParentFile());
}
}
}
批量修改文件名称案例:
package io;
import java.io.File;
public class pigai {
public static void main(String[] args) {
File dir=new File("E:/abc/123");
File[] file=dir.listFiles();
String dir1="zhouzhou";
for(File ele:file)
{
boolean ret=ele.getName().contains(dir1);
System.out.println(ret);
if(ele.getName().contains(dir1))
{
System.out.println(ele);
String pathname=ele.getName().replace(dir1, "");
ele.renameTo(new File(dir,pathname));
}
System.out.println(ele);
}
}
}
结果显示:
还没启动程序前
启动程序后:
package io;
import java.io.File;
import java.io.FilenameFilter;
public class wenjianguolv {
public static void main(String[] args) {
// TODO Auto-generated method stub
File f=new File("E:/abc/123");
File[] files=f.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return new File(dir,name).isFile()&&name.endsWith(".txt");
}
});
for(File ele:files)
{
System.out.println(ele);
}
}
}
结果只显示txt结尾的文件
package io;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class zonghe {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
File p=new File("file/abc.txt");
File q=new File("file/123.txt");
byte[] o=new byte[5];
InputStream h=new FileInputStream(p);
OutputStream j=new FileOutputStream(q);
int len=-1;
while((len=h.read(o))!=-1)
{
String str=new String(o, 0, len);
System.out.println(str);
j.write(o, 0, len);
}
h.close();
j.close();
}
}
字符输出流:
package io;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
public class zifushuru {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
File p=new File("file/123.txt");
Writer q=new FileWriter(p);
q.write("黑了咯 我");
q.close();
}
}
字符输入流:
package io;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
public class zifushuchu {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
File p=new File("file/123.txt");
Reader q=new FileReader(p);
char[] a=new char[5];
int len=-1;
while((len=q.read(a))!=-1)
{
System.out.println(a);
}
q.close();
}
}
文件拷贝:
package io;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Reader;
import java.io.Writer;
public class zifuzonghe {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
File p=new File("file/123.txt");
File q=new File("file/123copy.txt");
Reader in=new FileReader(p);
Writer out=new FileWriter(q);
char[] f=new char[1024];
int len=-1;
while((len=in.read(f))!=-1)
{
System.out.println(f);
out.write(f, 0, len);
}
out.close();
in.close();
}
}
package io;
import java.io.UnsupportedEncodingException;
import java.util.Arrays;
public class bianmajiema {
public static void main(String[] args) throws UnsupportedEncodingException {
// TODO Auto-generated method stub
String a="zhouzhou-98";
byte[] b=a.getBytes("GBK");
System.out.println(Arrays.toString(b));
b=a.getBytes("UTF-8");
System.out.println(Arrays.toString(b));
String c=new String(b,"UTF-8");
System.out.println(c);
}
}
字节缓冲流:
package io;
import java.awt.datatransfer.StringSelection;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
public class zijiehuanchong {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedOutputStream p=new BufferedOutputStream(new FileOutputStream("file/1.txt"));
p.write("fdfdferegbgmcbzcaderythtrny".getBytes());
p.close();
BufferedInputStream q=new BufferedInputStream(new FileInputStream("file/1.txt"));
byte[] b=new byte[5];
int len=-1;
while((len=q.read(b))!=-1)
{
String str=new String(b, 0, len);
System.out.println(str);
}
}
}
字符缓冲流:
package io;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class zifuhuanchongliu {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedWriter p=new BufferedWriter(new FileWriter("file/1.txt"));
p.write("fdoerwerfdwcsd,ncsxcvdgfvdfgvxc.vfd");
p.close();
BufferedReader q=new BufferedReader(new FileReader("file/1.txt"));
char[] a=new char[5];
/*
int line=-1;
while((line=q.read(a))!=-1)
{
String str=new String(a, 0, line);
System.out.println(str);
}
*/
String len=null;
while((len=q.readLine())!=null)
{
System.out.println(len);
}
}
}
package io;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.UnsupportedEncodingException;
import java.io.Writer;
public class transform {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
File p=new File("file/2.txt");
File q=new File("file/3.txt");
Reader r=new InputStreamReader(new FileInputStream(p),"GBK");
Writer w=new OutputStreamWriter(new FileOutputStream(q),"GBK");
int len=-1;
char[] b=new char[5000];
while((len=r.read(b))!=-1)
{
System.out.println(b);
w.write(b,0,len);
}
w.close();
r.close();
}
}
package io;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.CharArrayReader;
import java.io.CharArrayWriter;
import java.io.IOException;
import java.io.StringReader;
import java.io.StringWriter;
public class neicunliu {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
/*
*字节内存流*/
/*
ByteArrayOutputStream p=new ByteArrayOutputStream();
p.write("fdfjkdfgdsaopierwmfdsv".getBytes());
byte[] buffer=p.toByteArray();
ByteArrayInputStream q=new ByteArrayInputStream(buffer);
byte[] buf=new byte[5];
int len=-1;
while((len=q.read(buf))!=-1)
{
String str=new String(buf, 0, len);
System.out.println(str);
}
*/
/*字符内存流*/
/*
CharArrayWriter p=new CharArrayWriter();
p.write("fddskfyewiurfelgnffkvharfofsdl");
char[] q=p.toCharArray();
CharArrayReader f=new CharArrayReader(q);
System.out.println((char)f.read());*/
/*数组流*/
StringWriter p=new StringWriter();
p.write("fdsfewmdfbsd");
StringReader q=new StringReader(p.toString());
char[] b=new char[5];
int len=-1;
while((len=q.read(b))!=-1)
{
System.out.println(new String(b,0,len));
}
}
}
package io;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.SequenceInputStream;
public class hebin {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
SequenceInputStream in=new SequenceInputStream(new FileInputStream("file/2.txt"),new FileInputStream("file/3.txt"));
byte[] buf=new byte[1024];
int len=-1;
while((len=in.read(buf))!=-1)
{
System.out.println(new String(buf,0,len));
}
}
}
package io;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputFilter;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.io.WriteAbortedException;
class student implements Serializable{
private String name;
private int age;
private String sex;
public student(String n,int g,String s) {
this.name=n;
this.age=g;
this.sex=s;
}
public String toString() {
return "student [name=" + name + ", age=" + age + ", sex=" + sex + "]";
}
}
public class duixiangliu {
public static void main(String[] args) throws IOException, Exception {
// TODO Auto-generated method stub
File p=new File("file/对象流.txt");
write(p);
in(p);
}
private static void in(File p) throws Exception, IOException {
// TODO Auto-generated method stub
ObjectInputStream f=new ObjectInputStream(new FileInputStream(p));
student t= (student) f.readObject();
System.out.println(t);
f.close();
}
private static void write(File p) throws Exception, IOException {
// TODO Auto-generated method stub
ObjectOutputStream f=new ObjectOutputStream(new FileOutputStream(p));
f.writeObject(new student("suyuzhou", 20, "男"));
f.close();
}
}
package io;
import java.io.FileNotFoundException;
import java.io.PrintStream;
public class print {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
PrintStream ps=new PrintStream("text/345.txt");
ps.println(123);
ps.print("黄河之水天上来,奔流到海不复回");
ps.close();
}
}
总体: