输入和输出(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 ...
随机推荐
- MyEclipse8.5优化
MyEclipse8.5优化 第一步: 取消自动validation validation有一堆,什么xml.jsp.jsf.js等等,我们没有必要全部都去自动校验一下,只是需要的时候才会手工校验一下 ...
- 使用C#开发HTTP服务器系列之Hello World
各位朋友大家好,我是秦元培,欢迎大家关注我的博客.从今天起,我将开始撰写一组关于HTTP服务器开发的系列文章.我为什么会有这样的想法呢?因为人们对Web技术存在误解,认为网站开发是Web技术的全部.其 ...
- 【转】Android 6.0 Marsmallow BLE : Connection Parameters
原文网址:http://stackoverflow.com/questions/34617061/android-6-0-marsmallow-ble-connection-parameters Th ...
- bzoj 2784: [JLOI2012]时间流逝【树形期望dp】
来自lyd课件 发现s和last(s),next(s)成树结构,然后把式子化简成kx+b的形式,做树形dp即可 #include<iostream> #include<cstdio& ...
- 【插件开发】—— 5 SWT控件以及布局使用
前文回顾: 1 插件学习篇 2 简单的建立插件工程以及模型文件分析 3 利用扩展点,开发透视图 4 SWT编程须知 经过前几篇的介绍,多少对SWT又有了一些认识,那么这篇继续来看一下一些控件的组合使用 ...
- Jedis线上的一个小坑:Redis有并发访问的数据错乱的问题
问题现象: 业务数据有错乱,A的一些数据有好几个都是B的数据 这些业务数据在保存在Redis缓存中,怀疑是并发情况下Jedis错乱的问题 原因分析: JedisUtil里面在使用完Jedis 后释放资 ...
- Kafaka入门篇
1.Apache Kafka - 简介 Apache Kafka是一个分布式发布 - 订阅消息系统和一个强大的队列,可以处理大量的数据,并使您能够将消息从一个端点传递到另一个端点. Kafka适合离线 ...
- 关于Http的小常识(转载,仅供参考)
HTTP请求头提供了关于请求,响应或者其他的发送实体的信息.HTTP的头信息包括通用头.请求头.响应头和实体头四个部分.每个头域由一个域名,冒号(:)和域值三部分组成. 通用头标:即可用于请求,也可用 ...
- $.each遍历json对象(java将对象转化为json格式以及将json解析为普通对象)
查看一个简单的jQuery的例子来遍历一个JavaScript数组对象. var json = [ {"id":"1","tagName": ...
- 设置webbrowser浏览器内核
var hklm = Microsoft.Win32.Registry.LocalMachine; var lmRun64 = hklm.OpenSubKey(@"SO ...