java --输入输出
2021-01-26 10:13
标签:类对象 转换 obj div object sys 打印 ado env 1. 字节流 2. File类 3. 字符流 1. 字节流 1.1 InputStream和OutputStream 这是两个接口 (1)InputStream (2)OutputStream 1.2 FileInputStream和FileOutputStream 1.3 BufferedInputStream和BufferedOutputStream 1.4 对象序列化 将实现了Serializable接口的对象转换成一个字节序列,并能在以后将这个字节序列完全恢复成原来的对象,可跨网络、跨平台进行。 序列化时不仅保存了对象的全部信息,而且跟踪对象内包含的引用,并保存引用指向的对象,并一直往下追溯。 (1)ObjectOutputStream (2)ObjectInputStream (3)例子 序列化一个Date对象,然后还原 (4)序列号 创建一个某类对象,然后将其序列化保存;修改类成员,然后试图根据之前序列化的文件恢复对象。会发生错误: 序列化时需要序列号,默认序列号与类成员关联,因为修改了类的成员,因此恢复时由于序列号不匹配无法恢复。 解决:为类添加序列号 IDEA设置对实现Serializable接口的类,如果没有加序列号成员则报警告 1.5 标准输入输出流 --------------------------------------------------------------------------------------------------- 2. File类 文件和目录的抽象表示 类静态成员: 构造: 常用方法: 例子: (1)列出某目录下所有文件和目录 (2)给一个相对路径或相对路径下的某一个文件,找其所在目录下所有java文件(包括子目录下的) (3)删除指定目录 先删除该目录下所有子目录和文件,然后才能删除该目录本身 ------------------------------------------------------------------------------------------------------- 3. 字符流 处理Unicode编码的字符 3.1 Reader和Writer Reader方法: Writer方法: 3.2 FileReader和FileWriter 字符输入输出流 (1) FileReader的构造: (2) FileWriter的构造: (3)简单例子 例子:先以追加方式写数据到文件,然后读出显示 一次读一个字符: 使用字符数组,每次读多个字符: 3.3 BufferedReader、BufferedWriter 字符缓冲流:读入或写到字符输入输出流(FileReader、FileWriter),但是缓冲各个字符,对单个字符、数组、字符串的写入、读取更高效 (1)BufferedWriter 构造: 方法: (2)BufferedReader 构造: 方法: (3)例子 3.4 ------------------------------- 4. 打印流 (1)PrintStream (2)PrintWriter java --输入输出 标签:类对象 转换 obj div object sys 打印 ado env 原文地址:https://www.cnblogs.com/taoXiang/p/12844587.htmlabstract int read() 读一个字节
int read(byte[] b) 读字节到此数组
int read(byte[] b,int off,int len) 最多读len个字节到b的偏移off处
long skip(long n) 跳过n个字节
int available() 返回在不阻塞的情况下可获取的字节数
1 ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("date.dat"));
2 Date a = new Date();
3 System.out.println("原来的对象:"+a.toString());
4 oos.writeObject(a);
5 oos.close();
6
7 ObjectInputStream ois = new ObjectInputStream(new FileInputStream("date.dat"));
8 Date x = (Date)ois.readObject();
9 System.out.println("恢复的对象:"+x.toString());
10 ois.close();
java.io.InvalidClassException: com.company.TestCollection; local class incompatible: stream classdesc serialVersionUID = -7422208144105093601, local class serialVersionUID = -4251096331699201662
public static final InputStream in 字节输入流 ------System.in
public static final PrintStrean out 字节输出流-------System.out
File.pathSeparator
File.pathSeparatorChar
File.separator
File.separatorChar
File.listRoots() 获取可用根目录(windows就是所有可用盘符)File(File parent,String child)
File(String pathname)
File(String parent,String child)
File(URI uri)
1 //创建
2 boolean createNewFile() 如果文件不存在,则原子性的创建此文件
3 boolean mkdir() 创建目录
4 boolean mkdirs() 创建目录(如果指定的父级目录不存在,则也会创建其父级目录)
5 //删除
6 boolean delete() 删除相对路径指定的文件或目录
7 //获取
8 File getAbsoluteFile() 获取绝对路径
9 String getAbsolutePath() 获取据对路径
10 File getCanonicalFile() 获取绝对路径,会解析如 . .. 这样表示当前目录和父目录的符号
11 String getCanonicalPath()获取绝对路径,会解析如 . .. 这样表示当前目录和父目录的符号
12 String getName() 文件或目录名
13 String getParent() 父目录相对路径名
14 File getParentFile() 父目录相对路径
15 String getPath() 转成字符串类型的路径
16 long lastModified() 最后的修改时间
17 long length() 文件长度,单位字节
18 //判断
19 boolean exists() 此文件或目录是否存在
20 boolean isAbsolute() 是否是绝对路径
21 boolean isDirectory() 是否是一个目录
22 boolean isFile() 是否是一个文件
23 boolean isHidden() 是否是隐藏文件
24 //修改
25 boolean renameTo(File dest) 重命名
26 boolean setExecutable(boolean executable) 设置owner的可执行权限
27 boolean setExecutable(boolean executable,boolean ownerOnly) 设置owner或所有人的可执行权限
File x = new File("D:\\CodeEnv\\iedaPros");
File [] files = x.listFiles();
for(File f:files) {
if(f.isFile()) {
System.out.println("文件:"+f.getName()+" 长度:"+f.length());
}
else if(f.isDirectory()) {
System.out.println("目录:"+f.getName()+" 长度:"+f.length());
}
else {
continue;
}
}
1 void fun(File file) throws IOException{
2 if(file.isDirectory()) {
3 File[] files = file.listFiles();
4 for (File f : files) {
5 if (f.isFile()) {
6 if (f.getName().endsWith(".java")) {
7 System.out.println(f.getName());
8 }
9 }
10 else if (f.isDirectory()) {
11 fun(f);
12 }
13 }
14 }
15 else if(file.isFile()) {
16 File tmp = file.getAbsoluteFile();
17 File p = tmp.getParentFile();
18 fun(p);
19 }
20 }
21
22
23
24 File x = new File("test.txt");
25 fun(x);
1 void funDelete(File file) throws IOException {
2 if(file.isDirectory()) {
3 File[] files = file.listFiles();
4 for(File f:files) {
5 if(f.isFile()) {
6 f.delete();
7 }
8 else if(f.isDirectory()) {
9 funDelete(f);
10 }
11 }
12 file.delete();
13 }
14 }
15
16
17
18 File x = new File("xt");
19 funDelete(x);
void write(int c)
void write(String str)
void write(String str,int off,int len)
void write(char[] cbuf)
void write(charp[] vbuf,int off,int len)
FileReader(File file)
FileReader(FileDescriptor fd)
FileReader(String fileName)
FileWriter(File file)
FileWriter(File file,boolean append)
FileWriter(FileDescriptor fd)
FileWriter(String fileName)
FileWriter(String fileName,boolean append)
1 FileWriter w = new FileWriter("D:\\CodeEnv\\iedaPros\\test.txt",true);
2 w.write("FileWriter类1\n");
3 w.write("FileWriter类2\n");
4 w.write("FileWriter类3\n");
5 w.flush(); //刷新缓冲
6 w.close();
7
8 FileReader r = new FileReader("D:\\CodeEnv\\iedaPros\\test.txt");
9 int ch;
10 while((ch=r.read()) != -1) {
11 System.out.print((char)ch);
12 }
13 r.close();
FileReader r = new FileReader("D:\\CodeEnv\\iedaPros\\test.txt");
char ch[] = new char[5]; //一次最多读5个
int len = 0;
while((len=r.read(ch)) != -1) {
System.out.print(new String(ch,0,len));
}
r.close();
BufferedWriter(Writer out)
BufferedWriter(Writer out,int sz)
void newLine() 写入一个换行符[换行符根据系统确定]
BufferedReader(Reader in)
BufferedReader(Reader in,int sz)
String readLine() 读入一行,不包括换行符
1 BufferedWriter bw = new BufferedWriter(new FileWriter(filepath,true));
2 bw.write("BufferedWriter类-1\n");
3 bw.write("BufferedWriter类-2\n");
4 bw.close();
5
6 BufferedReader br = new BufferedReader(new FileReader(filepath));
7 char chs[] = new char[5];
8 int len = 0;
9 while((len=br.read(chs)) != -1) {
10 System.out.print(new String(chs,0,len));
11 }
12 br.close();