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流)的更多相关文章

  1. 输入和输出--IO流

    JavaIO流 首先要理解这个"流"(stream)字:Java把不同的输入,输出源抽象成为流,通过流的方式允许Java程序使用相同的方式来访问不同的输入,输出源.把这里的&quo ...

  2. C++ Primer高速学习 第一章 获得二:输入和输出 (IO)

    什么是输入输出.即Input-Output,缩写是非常装B的IO?请看经典民间解释: C++语言的输入输出是指信息从外部输入设备(如键盘.磁盘等)向计算机内部(内存)输入(即Input)和从内存向外单 ...

  3. 我爱Java系列之《JavaEE面试宝典》---【IO流面试总结】

    1.什么是比特(Bit),什么是字节(Byte),什么是字符(Char),它们长度是多少,各有什么区别 答案 Bit最小的二进制单位 ,是计算机的操作部分 取值0或者1 Byte是计算机操作数据的最小 ...

  4. 第54节:Java当中的IO流(中)

    Java当中的IO流(中) 删除目录 // 简书作者:达叔小生 import java.io.File; public class Demo{ public static void main(Stri ...

  5. java基础10(IO流)-字节流

    IO流 输入与输出[参照物是程序] 如果从键盘.文件.网络甚至是另一个进程(程序或系统)将数据读入到程序或系统中,称为输入 如果是将程序或系统中的数据写到屏幕.硬件上的文件.网络上的另一端或者是一个进 ...

  6. Java当中的IO流(中)

    Java当中的IO流(中) 删除目录 import java.io.File; public class Demo{ public static void main(String[] args){ / ...

  7. 【Java基础】IO 流

    IO 流 File 类 java.io.File 类是文件和文件目录路径的抽象表示形式,与平台无关. File 能新建.删除.重命名文件和目录,但 File 不能访问文件内容本身. 如果需要访问文件内 ...

  8. IO流(一)

    内容概要: Java以流的形式处理所有输入和输出.流是随通信路径从源移动到目的地的字节序列. 内存与存储设备之间传输数据的通道 流的分类: 按方向 输入流:将存储空间中的内容读到内存中   硬盘--& ...

  9. C++:文件的输入和输出

    1.共同的打开文件方式: fin.open("test.txt",ios::binary) fout.open("test.txt",ios::binary) ...

  10. java IO流 (六) 其它的流的使用

    1. 标准的输入输出流:System.in:标准的输入流,默认从键盘输入System.out:标准的输出流,默认从控制台输出 修改默认的输入和输出行为:System类的setIn(InputStrea ...

随机推荐

  1. java中一个字符串是另外一个字符串的字串

    java中一个字符串是另外一个字符串的字串 String类中有一个方法 public boolean contains(Sting s)就是用来判断当前字符串是否含有参数指定的字符串例s1=“take ...

  2. I.MX6 简单电路模拟USB设备的插入

    /**************************************************************************** * I.MX6 简单电路模拟USB设备的插入 ...

  3. Silverlight 后台利用代码触发 Button 的Click事件

    页面上一个查询按钮,当用户点击 回车键 的时候 处罚查询按钮的onclick事件 public MainPage() { InitializeComponent(); this.KeyDown += ...

  4. HDU1180:诡异的楼梯

    传送门 题意 迷宫搜索 分析 这题写起来挺简单的,锻炼搜索基本功,一开始用记忆化搜索TLE了,改用访问标记,0ms过了,用优先队列保证终点最快达到,我会在代码中提供一些强力数据 trick 1.遇到梯 ...

  5. java数组与字符串相互转换、整型与字符串相互转换【详解】

      java 数组->字符串 1.char数组(字符数组)->字符串 可以通过:使用String.copyValueOf(charArray)函数实现.  举例: char[] arr={ ...

  6. 有了Git这些操作,我再也不怕开发了!

    Git 是什么? Git 是一个分布式的代码管理容器,本地和远端都保有一份相同的代码. Git 仓库主要是由是三部分组成:本地代码,缓存区,提交历史. Git 有哪些常规操作? Git的常规操作你了解 ...

  7. 前端_vue-cli+element-ui+AceEditor+codemirror+electron-vue

    因项目工作需要,目前在研究前端的一些知识.主要想实现一个类似于webstorm,可以实现对本地文件进行增删改查等操作的IDE.下面通过几个专题,循序渐进,对某一些部分进行总结,希望能对你有帮助.(网上 ...

  8. DFS和BFS模板

    DFS: 该DFS框架以2D坐标范围为例,来体现DFS算法的实现思想 #include<cstdio> #include<cstring> #include<cstdli ...

  9. Jumping Jack CodeForces - 11B

    Jumping Jack CodeForces - 11B 就是一个贪心. 基本思路: 正负没有关系,先取绝对值. 首先跳过头,然后考虑怎么回来. 设超过头的步数为kk.如果kk为偶数,那么直接在前面 ...

  10. Android 线程池系列教程(2)Thread,Runnable是基类及如何写Run方法

    Specifying the Code to Run on a Thread 上一课   下一课 1.This lesson teaches you to Define a Class that Im ...