输入和输出(IO流)
File类的常用方法:

File对象的创建和部分方法使用:
File file =new File("file\\我是文本.txt");
System.out.println("相对路径是:"+file.getPath());
//绝对路径
System.out.println("绝对路径是:"+file.getAbsoluteFile());
System.out.println("文件名字是:"+file.getName());
System.out.println("文件字符的长度:"+file.length());
//判断是否是文件,是返回true
System.out.println(file.isFile());
File file2=new File("D:/自动创建.txt");
//创建文件时 如果文件不存在则创建文件并返回true,如果文件存在则不再创建并返回false。
boolean createNewFile = file2.createNewFile();
System.out.println(createNewFile);
输出结果:

注:文件的绝对路径是由程序根据程序当前路径和文本相对路径拼接而成的(可见方法不够智能,需要注意)
流:
①流是一组有序的数据序列
②以先进先出方式发送信息的通道

字节流是 8 位通用字节流,字符流是 16 位 Unicode 字符流

输入输出流是相对于计算机内存来说的
FileInputStream和FileOutputStream的使用:
//创建输入流
FileInputStream fis=new FileInputStream("file\\我是文本.txt");
//创建输出流
FileOutputStream fos=new FileOutputStream("D:/我也是文本.txt");
StringBuilder su=new StringBuilder();
byte[] bytes=new byte[1024];
int num;
//一次读取一个数组长度的字符
while((num=fis.read(bytes))!=-1){
String s=new String(bytes);
//把文件中的内容写到一个可变字符串中
su.append(s);
//把文件中的内容写到另一个文件中,相当于复制文件
fos.write(bytes, 0, num);
}
//把文件中的内容打印出来
System.out.print(su);
//关闭输入输出流,先开的后关
fos.close();
fis.close();
FileReader和FileWriter的使用:
FileReader fr=new FileReader("file\\我是文本.txt");
//在文件内容后面添加
FileWriter fw=new FileWriter("D:/自动创建.txt",true);
String st="我爱你中国!";
StringBuilder sbu=new StringBuilder();
char[] chars=new char[1024];
int num;
while((num=fr.read(chars))!=-1){
String s=new String(chars);
sbu.append(s);
fw.write(chars,0,num);
}
//可以直接写字符串
fw.write(st);
System.out.print(sbu);
fw.close();
fr.close();
读写二进制文件:

DataInputStream和DataOutputStream的使用:
//创建读二进制文件对象
DataInputStream din=new DataInputStream(new FileInputStream("file\\皮卡丘.jpeg"));
//创建写二进制文件对象,要写到的路径和图片名字
DataOutputStream dou=new DataOutputStream(new FileOutputStream("D:\\皮卡丘啊.jpg"));
int num;
byte[] bytes=new byte[1024];
while((num=din.read(bytes))!=-1){
//复制图片
dou.write(bytes,0,num);
}
dou.close();
din.close();
序列化和反序列化:

序列化和反序列化的应用场景:


序列化类的创建:
//实现Serializable接口代表该类可以序列化
public class Student implements Serializable{
//序列化版本
private static final long serialVersionUID = 1L; private String name;
private char sex;
//transient关键字可以使该变量不被序列化
private transient int age; public Student(String name,char sex,int age){
this.name=name;
this.sex=sex;
this.age=age;
} public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public char getSex() {
return sex;
}
public void setSex(char sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String toString(){
return "Student [name=" + name + ", age=" + age + ",sex="+sex+"]";
} }
序列化和反序列化的使用:
public class SerializableTest {
public static void main(String[] args) throws Exception {
Student stu=new Student("张三",'男',21);
//序列化,把Student对象以字节存放到记事本中
ObjectOutputStream ops=new ObjectOutputStream(new FileOutputStream("file\\我是文本.txt"));
ops.writeObject(stu);
ops.close();
//反序列化,把记事本中的数据转换为对象输出
ObjectInputStream obs=new ObjectInputStream(new FileInputStream("file\\我是文本.txt"));
Student stu1=(Student) obs.readObject();
obs.close();
System.out.print(stu1);
}
}
运行结果:也可见,变量age没有被序列化

输入和输出(IO流)的更多相关文章
- 输入和输出--IO流
JavaIO流 首先要理解这个"流"(stream)字:Java把不同的输入,输出源抽象成为流,通过流的方式允许Java程序使用相同的方式来访问不同的输入,输出源.把这里的&quo ...
- C++ Primer高速学习 第一章 获得二:输入和输出 (IO)
什么是输入输出.即Input-Output,缩写是非常装B的IO?请看经典民间解释: C++语言的输入输出是指信息从外部输入设备(如键盘.磁盘等)向计算机内部(内存)输入(即Input)和从内存向外单 ...
- 我爱Java系列之《JavaEE面试宝典》---【IO流面试总结】
1.什么是比特(Bit),什么是字节(Byte),什么是字符(Char),它们长度是多少,各有什么区别 答案 Bit最小的二进制单位 ,是计算机的操作部分 取值0或者1 Byte是计算机操作数据的最小 ...
- 第54节:Java当中的IO流(中)
Java当中的IO流(中) 删除目录 // 简书作者:达叔小生 import java.io.File; public class Demo{ public static void main(Stri ...
- java基础10(IO流)-字节流
IO流 输入与输出[参照物是程序] 如果从键盘.文件.网络甚至是另一个进程(程序或系统)将数据读入到程序或系统中,称为输入 如果是将程序或系统中的数据写到屏幕.硬件上的文件.网络上的另一端或者是一个进 ...
- Java当中的IO流(中)
Java当中的IO流(中) 删除目录 import java.io.File; public class Demo{ public static void main(String[] args){ / ...
- 【Java基础】IO 流
IO 流 File 类 java.io.File 类是文件和文件目录路径的抽象表示形式,与平台无关. File 能新建.删除.重命名文件和目录,但 File 不能访问文件内容本身. 如果需要访问文件内 ...
- IO流(一)
内容概要: Java以流的形式处理所有输入和输出.流是随通信路径从源移动到目的地的字节序列. 内存与存储设备之间传输数据的通道 流的分类: 按方向 输入流:将存储空间中的内容读到内存中 硬盘--& ...
- C++:文件的输入和输出
1.共同的打开文件方式: fin.open("test.txt",ios::binary) fout.open("test.txt",ios::binary) ...
- java IO流 (六) 其它的流的使用
1. 标准的输入输出流:System.in:标准的输入流,默认从键盘输入System.out:标准的输出流,默认从控制台输出 修改默认的输入和输出行为:System类的setIn(InputStrea ...
随机推荐
- UITableview控件简单介绍
注意点:数据源方法只能在控制器里设置 一.基本介绍 在众多移动应⽤用中,能看到各式各样的表格数据 . 在iOS中,要实现表格数据展示,最常用的做法就是使用UITableView,UITableView ...
- 【POJ 3107】 Godfather
[题目链接] 点击打开链接 [算法] 这题描述有些繁琐,先简化一下题意 : 对于一棵无根树,删除一个节点,使得其余的联通块中,最大的联通块最小 那么,这题就很好做了 对这棵树进行一遍DFS,求出每个节 ...
- javascript 中==与===
1.==相等运算符 1.1如果操作数具有相同的类型,则判断其等同性,如果两个数的值相等,则返回true(相等),否则返回 false (不相等) 1.2如果两个操作数类型不同,则按如下规则: null ...
- (转)IE内存泄露,iframe内存泄露造成的原因和解决方案
http://my.oschina.net/jsan/blog/11169 http://blog.csdn.net/tianma630/article/details/8502395 jQuery ...
- bzoj 1606: [Usaco2008 Dec]Hay For Sale 购买干草【01背包】
在洛谷上被卡常了一个点! 就是裸的01背包咯 为啥我在刷水题啊 #include<iostream> #include<cstdio> #include<algorith ...
- [SDOI2019] 移动金币
分析 阶梯NIM模型:共有m+1堆石子,石子总数不超过n-m,求必胜的,即奇数堆石子数目异或和非零的局面数.补集转化,答案C(n,m)-奇数堆石子数目异或和位0的局面数. 可以想到按位dp,设f[i, ...
- 只需3步,即可将你的Chromium Edge 浏览器设置成中文
最近,Chromium Edge 浏览器推出了添加语言包的功能,于是我们可以轻松将其界面设置成中文的. 第1步: 升级浏览器到最新版 在Chromium Edge 浏览器的地址栏中输入: edge:/ ...
- [ZJOI2011]道馆之战
Description 口袋妖怪(又名神奇宝贝或宠物小精灵)红/蓝/绿宝石中的水系道馆需要经过三个冰地才能到达馆主的面前,冰地中的每一个冰块都只能经过一次.当一个冰地上的所有冰块都被经过之后,到下一个 ...
- B Balala Power!
Bryce1010模板 每个字母所在位置对应权值加和,肯定存不下. 但我们只需要26个字母对应值之间的关系即可,开一个数组a[i][j]分别记录字母i在j这个位置上出现了多少次,对于大于26的值进位, ...
- Oracle10g安装过程中ORA-27125问题解决
Oracle10g在CentOS7的安装过程中报错如下错误信息: ORA-: unable to create shared memory segment 解决办法: [root@dbsrv3 dat ...