输入和输出(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 ...
随机推荐
- android编译打包(用ant脚本打包)
为了可以实现自动化打包,下面我介绍一下如何用ant工具来打包android项目: 直接上build.xml文件源码: <?xml version="1.0"?> < ...
- 动画库tween.js
动画库tween.js var Tween = { Linear:function (start,alter,curTime,dur) {return start+curTime/dur*alter; ...
- 关于netty的简单实现
1. 新建两个maven项目, 分别为 netty-server: netty的服务端: 消息的消费者 netty-client: netty的客户端: 消息的生产者 2. 分别引入netty的mav ...
- OSI模型与TCP/IP模型基础
一.OSI七层模型 OSI(Open System Interconnection),OSI是一个开放性的通行系统互连参考模型,是一个协议规范.OSI七层模型是一种框架性的设计方法 ,建立七层模型的主 ...
- sql server 日期模糊查询
转换成varchar类型 ) like '%2010-10-09%' 两个字段拼接成一个字段 SELECT C0252_ID, C0252_name,C0252_Addr, ((select top ...
- bzoj 2152: 聪聪可可【点分治】
裸的点分治,运算在模3下进行然后统计答案的时候统计余1的*余2的*2+余0的^2 #include<iostream> #include<cstdio> using names ...
- Luogu P2327 [SCOI2005]扫雷【递推/数学】By cellur925
题目传送门 推了好久啊.看来以后要多玩扫雷了qwq. 其实本题只有三种答案:0.1.2. 对于所有第一列,只要第一个数和第二个数确定后,其实整个数列就确定了,我们可以通过这个递推式得出 sec[i-] ...
- 51nod 1098 最小方差
#include <iostream> #include <cstdio> #include <algorithm> using namespace std; ty ...
- 随机L系统分形树 分类: 计算机图形学 2014-06-01 23:27 376人阅读 评论(0) 收藏
下面代码需要插入到MFC项目中运行,实现了计算机图形学中的L系统分形树. class Node { public: int x,y; double direction; Node(){} }; CSt ...
- 1475 建设国家 DP
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1475 这题转化过来就是,给定n个点,每个点都有一个过期时间,一个价值.现 ...