1. 字节流

2. File类

3. 字符流

1.  字节流

1.1  InputStream和OutputStream

这是两个接口

(1)InputStream

abstract intread() 读一个字节int read(byte[] b) 读字节到此数组int read(byte[] b,int off,intlen) 最多读len个字节到b的偏移off处long skip(longn) 跳过n个字节int available() 返回在不阻塞的情况下可获取的字节数

(2)OutputStream

1.2  FileInputStream和FileOutputStream

1.3 BufferedInputStream和BufferedOutputStream

1.4  对象序列化

将实现了Serializable接口的对象转换成一个字节序列,并能在以后将这个字节序列完全恢复成原来的对象,可跨网络、跨平台进行。

序列化时不仅保存了对象的全部信息,而且跟踪对象内包含的引用,并保存引用指向的对象,并一直往下追溯。

(1)ObjectOutputStream

(2)ObjectInputStream

(3)例子

序列化一个Date对象,然后还原

1 ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("date.dat"));2 Date a = newDate();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();

(4)序列号

创建一个某类对象,然后将其序列化保存;修改类成员,然后试图根据之前序列化的文件恢复对象。会发生错误:

java.io.InvalidClassException: com.company.TestCollection; local class incompatible: stream classdesc serialVersionUID = -7422208144105093601, local class serialVersionUID = -4251096331699201662

序列化时需要序列号,默认序列号与类成员关联,因为修改了类的成员,因此恢复时由于序列号不匹配无法恢复。

解决:为类添加序列号

IDEA设置对实现Serializable接口的类,如果没有加序列号成员则报警告

1.5 标准输入输出流

public static final InputStream in 字节输入流 ------System.inpublic static final PrintStrean out 字节输出流-------System.out

---------------------------------------------------------------------------------------------------

2. File类

文件和目录的抽象表示

类静态成员:

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 booleancreateNewFile() 如果文件不存在,则原子性的创建此文件3 booleanmkdir() 创建目录4 booleanmkdirs() 创建目录(如果指定的父级目录不存在,则也会创建其父级目录)5 //删除

6 booleandelete() 删除相对路径指定的文件或目录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 longlastModified() 最后的修改时间17 longlength() 文件长度,单位字节18 //判断

19 booleanexists() 此文件或目录是否存在20 booleanisAbsolute() 是否是绝对路径21 booleanisDirectory() 是否是一个目录22 booleanisFile() 是否是一个文件23 booleanisHidden() 是否是隐藏文件24 //修改

25 booleanrenameTo(File dest) 重命名26 boolean setExecutable(booleanexecutable) 设置owner的可执行权限27 boolean setExecutable(boolean executable,boolean ownerOnly) 设置owner或所有人的可执行权限

例子:

(1)列出某目录下所有文件和目录

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;

}

}

(2)给一个相对路径或相对路径下的某一个文件,找其所在目录下所有java文件(包括子目录下的)

1 void fun(File file) throwsIOException{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);

(3)删除指定目录

先删除该目录下所有子目录和文件,然后才能删除该目录本身

1 void funDelete(File file) throwsIOException {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);

-------------------------------------------------------------------------------------------------------

3. 字符流

处理Unicode编码的字符

3.1 Reader和Writer

Reader方法:

Writer方法:

void write(intc)voidwrite(String str)void write(String str,int off,intlen)void write(char[] cbuf)void write(charp[] vbuf,int off,int len)

3.2  FileReader和FileWriter

字符输入输出流

(1)

FileReader的构造:

FileReader(File file)

FileReader(FileDescriptor fd)

FileReader(String fileName)

(2)

FileWriter的构造:

FileWriter(File file)

FileWriter(File file,booleanappend)

FileWriter(FileDescriptor fd)

FileWriter(String fileName)

FileWriter(String fileName,boolean append)

(3)简单例子

例子:先以追加方式写数据到文件,然后读出显示

一次读一个字符:

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 intch;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();

3.3  BufferedReader、BufferedWriter

字符缓冲流:读入或写到字符输入输出流(FileReader、FileWriter),但是缓冲各个字符,对单个字符、数组、字符串的写入、读取更高效

(1)BufferedWriter

构造:

BufferedWriter(Writer out)

BufferedWriter(Writer out,int sz)

方法:

void newLine() 写入一个换行符[换行符根据系统确定]

(2)BufferedReader

构造:

BufferedReader(Reader in)

BufferedReader(Reader in,int sz)

方法:

String readLine() 读入一行,不包括换行符

(3)例子

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(newFileReader(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();

3.4

-------------------------------

4. 打印流

(1)PrintStream

(2)PrintWriter

java t输出_java --输入输出相关推荐

  1. JAVA 日历输出_java控制台输出日历

    <java控制台输出日历>由会员分享,可在线阅读,更多相关<java控制台输出日历(4页珍藏版)>请在人人文库网上搜索. 1.小程序:控制台输出日历package cn.jav ...

  2. java 重定向输入_java输入输出重定向

    如果你经常使用UNIX 或者 Windows shells (命令处理器),你可能经常像这样使用I/O重定向: $ command >outfile 这个用法是说:运行一个命令,并将它的标准输出 ...

  3. java 打印 模板_Java输入输出模板

    常规输入输出绝壁有毒- import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWri ...

  4. java 错误输出_Java中的字数统计错误输出

    我是Java新手. 我编写了一个代码来计算文件中特定单词的出现次数.要向用户询问要计算的单词.我写了两个代码.第一个代码运行正常,计数正确.而在第二个代码中,计数较少.我无法弄清楚原因.有人可以帮我找 ...

  5. java流输出_Java OutputStream.write()将数据写入输出流

    首页 > 基础教程 > IO流 > OutputStream类 Java OutputStream.write()将数据写入输出流 定义 public abstract void w ...

  6. java自动换行输出_Java PrintStream.println打印自动换行

    首页 > 基础教程 > IO流 > OutputStream类 Java PrintStream.println打印自动换行 定义 public void println() pub ...

  7. java十进制输出_JAVA输入一个十进制数N,输出r进制的数

    \\引入包 import java.util.Scanner; import java.util.Stack; public class Change { public static void mai ...

  8. java hashmap 输出_JAVA如何把HashMap内容输出到文本文件

    接下来我们创建一个TxtUtil工具类,来实现写入文本文件的方法.下面这个方法是将数据追加写入到文件文件的末尾,我们可以看到该方法有两个参数,List就是我们要写入的数据,因此不管是什么格式的数据我们 ...

  9. artifacts屏蔽java文件输出_Java 是什么?

    Java 是一种通用型的计算机编程语言,基于类实现了面向对象的编程范式,通过虚拟机实现了强大的跨平台能力.用 Java 写的代码,既可以在 Windows 操作系统上面运行,也可以在 UNIX.Lin ...

  10. java循环输出_Java实现excel导出(内容循环多个)

    1 /************2019-11-28 ******************/ 2 /** 3 * 数据导出 2019-11-284 */ 5 publicString exportExc ...

最新文章

  1. mysql create table()_MySQL Create Table创建表
  2. layui 数据表格内容过长遮挡_word表格技巧:遇到这三种情况,你会处理么?
  3. Oracle官方教程之Fork/Join
  4. 【Matlab 控制】构建系统,绘制零极点
  5. HDU Problem - 2732 Leapin' Lizards(最大流,拆点建边)
  6. 手机屏幕适配原理及实现
  7. 朗逸机器人_几张动图告诉你,工业机器人无所不能!
  8. Ms visio 下载
  9. i7 8750h支持linux,开启游戏本六核时代!酷睿i7-8750H处理器性能实测
  10. ECharts(官网:http://echarts.baidu.com)
  11. php date转换为时间戳,php date如何转换时间戳
  12. 毕业论文每周报告进度计算机,计算机毕业论文进度安排怎么写
  13. mfc动态改变clip风格_游戏背景音乐的种类—动态音效
  14. C++ : 热血格斗场
  15. 基于Android的无线视频监控的设计与实现 -- 开题报告
  16. python get pip.py_get-pip.py 安装
  17. 如何安装华为路由器模拟环境ENSP
  18. angular 使用ngx-quill
  19. ARM:嵌入式系统之WDT中断实验
  20. latch: cache buffers chains latch: ges resource hash list

热门文章

  1. Oracle中将0x1D转为字符,orcle導入大數據文件
  2. 手机安装python模块吗_1-Python-非root用户安装Python及Python模块
  3. 马尔科夫决策过程(MDP) : BlackJack (MC-On Policy)
  4. hadoop与hive
  5. 120.三角形最小路径和
  6. java调用matlab的jar包
  7. python redis模块常用_python redis 模块
  8. Regularized Gaussian Covariance Estimation
  9. 【数论思维题】Enlarge GCD【Codeforces Round #511 (Div. 2)】
  10. 实数系的完备性的含义