输入和输出(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 ...
随机推荐
- BZOJ_1195_[HNOI2006]最短母串_AC自动机+BFS+分层图
BZOJ_1195_[HNOI2006]最短母串_AC自动机+BFS+分层图 Description 给定n个字符串(S1,S2,„,Sn),要求找到一个最短的字符串T,使得这n个字符串(S1,S2, ...
- 关于zookeeper的集群搭建
在所有机器上安装完zookeeper之后, 开始进行集群的搭建 1. 修改 ../zookeeper/conf/zoo.cfg 文件 tickTime=2000 dataDir=/usr/local/ ...
- linux简单技巧和怎么样进入root用户
1.使用shell的Tab键自动补全 Tab在linux命令行输入中可以自动完成.在linux 命令行中使用Tab键会极大提高输入效率2.使用shell的历史记录 shell会记录用户执行命令的历史记 ...
- (转)Sql Server 保留几位小数的两种做法
原文地址:http://blog.csdn.net/skyandcode/article/details/23523815 问题: 数据库里的 float momey 类型,都会精确到多位小数.但有时 ...
- Linux 常用命令十四 killall和pkill
用killall杀死所有同名的进程. wang@wang:~/workpalce/git$ ps -aux | grep vim wang pts/ S+ : : vim a wang pts/ S+ ...
- bzoj 2229: [Zjoi2011]最小割【Gomory–Hu tree最小割树】
这个算法详见http://www.cnblogs.com/lokiii/p/8191573.html 求出两两之间最小割之后暴力统计即可 #include<iostream> #inclu ...
- 【OpenJ_Bailian - 4001】 Catch That Cow(bfs+优先队列)
Catch That Cow Descriptions: Farmer John has been informed of the location of a fugitive cow and wan ...
- Java知识点脑图
做服务器开发有十几年了,其中大部分用到的都是Java服务器开发,从JDK1.4到现在的JDK1.8,从基本的Java Application到 J2EE(JBOSS,Glassfish),OSGI,到 ...
- Unix\Linux | 总结笔记 | 命令_ WC
wc[选项][参数] wc命令用来计算数字.利用wc指令我们可以计算文件的Byte数.字数或是列数,若不指定文件名称,或是所给予的文件名为“-”,则wc指令会从标准输入设备读取数据. -c或--byt ...
- [Usaco2005 Feb]Feed Accounting 饲料计算
Description Farmer John is trying to figure out when his last shipment of feed arrived. Starting wit ...