JAVA入门到精通-第45讲-IO编程

image1=ImageIO.read(new File("bomb_1.gif"));

图片拷贝:

输入流和输出流同时要用的问题:

图片读入到内存;

写入,输出到某个文件;

二进制文件,字节流完成;

FileInputStream fis=new FileInputStream("xxxx.jpg");

输出到指定文件:FileOutputStream  fos=null;

关闭打开的文件流:

------------------------------------------

FileReader,FileWriter类,文件字符流的对象;

Reader读进来,Writer写出去;

byte 是一位,不足以表示汉字;

char 是两位,可以表示一个汉字;

达到文件的末尾,返回-1;

char是1024个字符;

String s=new String(c,0,n);

这样,就没有乱码;

关闭文件:finally---fr.close---fw.close

fw.write(c,0,n); 读取文件,防止乱码;

因为,发现JAVA开发者效率还是不够高,

提出缓冲字符流:提高效率;

一个一个字节/字符读取,速度太慢;

是一种编译异常,

BufferedReader缓存为对象;

先通过FileReader找到一个文件,

然后通过BufferReader进行缓存;

readLine不读取换行的;末尾,返回null;

一行一行的读取,速度比较快;

BufferedWriter输出到磁盘;

FileWriter找到对象;

BufferedWriter输出到缓存;

文件的关闭:文件不关闭,后果很严重:

换行:\r\n

坦克存盘退出:

记录坦克的坐标

一行行读进来,让坦克暂停;

记事本功能的实现:

---------------------------------------------

java文件编程--常用io流
常用io流--文件字节流
1、案例[Io02.java]:读取文件(文件字节输入流使用,目的:FileInputStream类)把用FileInputStream的对象把文件读入到内存
/**
* File类的基本用法
* io流--文件字节流
* FileInputStream类的使用
*/
import java.io.*;
public class Io02 {
public static void main(String[] args) {
//得到一个文件对象,f指向e:\ff\hsp.txt文件
File f=new File("e:\\ff\\hsp.txt");
FileInputStream fis=null;
try {
//因为File没有读写的能力,所以需要使用InputStream类
fis=new FileInputStream(f);
//定义一个字节数组,相当于缓存
byte []bytes=new byte[1024];
int n=0;//得到实际读取到的字节数
//循环读取
while((n=fis.read(bytes))!=-1){
//把字节转成String
String s=new String(bytes,0,n);
System.out.println(s);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
//关闭文件流必需放在finally语句块中
try {
fis.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}

x

39

1

java文件编程--常用io流

2

常用io流--文件字节流

3

1、案例[Io02.java]:读取文件(文件字节输入流使用,目的:FileInputStream类)把用FileInputStream的对象把文件读入到内存

4

/**

5

 * File类的基本用法

6

 * io流--文件字节流

7

 * FileInputStream类的使用

8

 */

9

import java.io.*;

10

public class Io02 {

11

    public static void main(String[] args) {

12

        //得到一个文件对象,f指向e:\ff\hsp.txt文件

13

        File f=new File("e:\\ff\\hsp.txt");

14

        FileInputStream fis=null;

15

        try {

16

            //因为File没有读写的能力,所以需要使用InputStream类

17

            fis=new FileInputStream(f);

18

            //定义一个字节数组,相当于缓存

19

            byte []bytes=new byte[1024];

20

            int n=0;//得到实际读取到的字节数

21

            //循环读取

22

            while((n=fis.read(bytes))!=-1){

23

                //把字节转成String

24

                String s=new String(bytes,0,n);

25

                System.out.println(s);

26

            }

27

        } catch (Exception e) {

28

            e.printStackTrace();

29

        }finally{

30

            //关闭文件流必需放在finally语句块中

31

            try {

32

                fis.close();

33

            } catch (Exception e) {

34

                e.printStackTrace();

35

            }

36

        }

37

    }

38

}

39


2、案例[Io03.java]:从键盘接收用户输入内容,并保存到文件中(文件字节输出流,目的:FileOutputStream)

/**
* File类的基本用法
* io流--文件字节流
* FileOutputStream类的使用
*/
import java.io.*;
public class Io03 {
public static void main(String[] args) {
File f=new File("e:\\ff\\ss.txt");//直接覆盖写同一个文件
//字节输出流
FileOutputStream fos=null;
if(f.exists()){
System.out.println("文件已存在");
}else{
try {
fos=new FileOutputStream(f);
String s="hello,world!\r\n";
String s1="中国人";
fos.write(s.getBytes());
fos.write(s1.getBytes());
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
fos.close();
} catch (Exception e2) {
e2.printStackTrace();
}
}
}
}
}

1

33

1

/**

2

 * File类的基本用法

3

 * io流--文件字节流

4

 * FileOutputStream类的使用

5

 */

6

import java.io.*;

7

public class Io03 {

8

    public static void main(String[] args) {

9

        File f=new File("e:\\ff\\ss.txt");//直接覆盖写同一个文件

10

                //字节输出流

11

        FileOutputStream fos=null;

12

        if(f.exists()){

13

            System.out.println("文件已存在");

14

        }else{

15

            try {

16

                fos=new FileOutputStream(f);

17

                String s="hello,world!\r\n";

18

                String s1="中国人";

19

                fos.write(s.getBytes());

20

                fos.write(s1.getBytes());

21

            } catch (Exception e) {

22

                e.printStackTrace();

23

            }finally{

24

                try {

25

                    fos.close();

26

                } catch (Exception e2) {

27

                    e2.printStackTrace();

28

                }

29

            }

30

        }

31

    }

32

}

33


3、案例[Io04.java]:图片拷贝

/**
* File类的基本用法
* io流--文件字节流
* 图片拷贝--FileInputStream类与 FileOutputStream类
*/
import java.io.*;
public class Io04 {
public static void main(String[] args) {
//先将图片读入到内存,再将内存中的图片写入到某个文件
//因为二进制文件只能拿使用字节流来处理
//输入流
FileInputStream fis=null;
//输出流
FileOutputStream fos=null;

try {
fis=new FileInputStream("e:\\ff\\a.jpg");
fos=new FileOutputStream("e:\\a.jpg");
byte buf[]=new byte[1024];
int n=0;//记录实际读取到的字节数
//循环读取图片
while((n=fis.read(buf))!=-1){
//输出到指定文件
fos.write(buf);
}

} catch (Exception e) {
e.printStackTrace();
}finally{
//一定要关闭打开的文件流
try {
fis.close();
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}

1

40

1

/**

2

 * File类的基本用法

3

 * io流--文件字节流

4

 * 图片拷贝--FileInputStream类与 FileOutputStream类

5

 */

6

import java.io.*;

7

public class Io04 {

8

    public static void main(String[] args) {

9

        //先将图片读入到内存,再将内存中的图片写入到某个文件

10

        //因为二进制文件只能拿使用字节流来处理

11

        //输入流

12

        FileInputStream fis=null;

13

        //输出流

14

        FileOutputStream fos=null;

15

        

16

        try {

17

            fis=new FileInputStream("e:\\ff\\a.jpg");

18

            fos=new FileOutputStream("e:\\a.jpg");

19

            byte buf[]=new byte[1024];

20

            int n=0;//记录实际读取到的字节数

21

            //循环读取图片

22

            while((n=fis.read(buf))!=-1){

23

                //输出到指定文件

24

                fos.write(buf);

25

            }

26

            

27

        } catch (Exception e) {

28

            e.printStackTrace();

29

        }finally{

30

            //一定要关闭打开的文件流

31

            try {

32

                fis.close();

33

                fos.close();

34

            } catch (Exception e) {

35

                e.printStackTrace();

36

            }

37

        }

38

    }

39

}

40


来自为知笔记(Wiz)

原文地址:https://www.cnblogs.com/xuxaut-558/p/10045776.html

时间: 2024-10-08 23:59:03

JAVA入门到精通-第45讲-IO编程的相关文章

JAVA入门到精通-第46讲-IO编程.记事本开发

IO编程-记事本开发 fis.read(bytes) 字节数组: 通过fis把文件里面的1800个字符,尽可能的读, 最多读1024个.记录一下,0-1024记录到bytes; 再去读的首,fis.read试图1024个字节,不够了, 第二次读了776个,n=776:(0,776): 第三次,又准备读1024,这次一个读不到,返回-1: 退出循环: JMenuBar 菜单条是一个JMenuBar: JMenu File是一个JMenu; JMenuItem 下面这些选项是JMenuItem; 一

JAVA入门到精通-第44讲-IO编程

//FileOutputStream的使用 准备把它输出到d:\\ss.txt 文件, 文件不存在直接创建: 如果存在,可能会被覆盖: //字节流 FileOutputStream fos=null; //输出-Output-离开内存-Output/Write //如何把string转换成bytes数组: s.getBytes() //关闭文件流 //两个字符串的换行 world\r\n \r\n就是回车换行的意思 ----------------------------------------

JAVA入门到精通-第32讲-swing编程实战

 JBorderLayout,左边是JList,拆分窗格: 图片是放在JLabel上的,图片的地址写好就行:  在相关项目下面建立一个文件夹Folder,放置图片:或者复制粘贴:   拆分:水平拆分?垂直拆分?    拆分之后把jList和jl1这两个组件放进去: 可以伸缩:  在窗口左上角出现自己的图标? Border布局: 多行文本框带滚动条,聊天窗口可滚动:   加入QQ左上角图标:      转成图片,getImage; Border布局很有用, CENTER会被自动挤满:  QQ号码.

JAVA入门到精通-第94讲-山寨QQ项目8-好友在线提示

遇到的问题: 现在每登录一个人,后面的人是能看到前面的登录的人的: 但是,前面的人看不到后面的人登录: //后面每登录一个人,有责任去通知前面登录的人他已经上线了: 通知了完以后,需要更改好友在线的情况: //不让同一个账号反复登录 //如果 好友不在线,则不能聊天 ================================ [ManageQqChat.java] /** * 这是一个管理用户聊天界面的类 */ package com.qq.client.tools; import jav

JAVA入门到精通-第31讲-常见组件

面板组件-Jpanel  一个JFrame,多个JPanel: JPanel默认是流布局:FlowLayout:  通过JPanel达到复杂布局的目的:  可以认为是网格布局,有3个JPanel:2个Label:2个按钮: 一个密码框和一个文本输入框:   最终展现出来的还是靠JFrame展现的  网格布局好点,3个JPanel,用流布局,控件往里加: ButtonGroup按钮组:一组里面只能选择一个:    对单选框管理,就是把它加入到ButtonGroup里面: 单选框也是一个个放进JPa

JAVA入门到精通-第92讲-山寨QQ项目6-多对多的聊天

QQ聊天项目演示-多对多的聊天 流同时并发的异常: 服务器中转 2/3号只有一个连接: 接收信息:while循环不停地读取: 当1号点开两个窗口时,2/3会共同去争取这个socket: 会出现流同时并发异常: Socket处理成static不太合理: 启动一个窗口就会占据Socket不放: ------------- -实现真正的多人聊天,互相不出现错误 -每一个登录的账号独享一份socket -去掉static 当一个链接达成的时候, 启动线程, 和服务器保持通讯的状态: 做一个类来管理客户端

JAVA入门到精通-第0讲

p.MsoNormal,li.MsoNormal,div.MsoNormal { margin: 0cm; margin-bottom: .0001pt; text-align: justify; font-size: 10.5pt; font-family: "Calibri", "sans-serif" } .MsoChpDefault { } div.Section1 { } java平台 1.J2SE java开发平台标准版 2.J2EE java开发平台企

JAVA入门到精通-第33讲-绘图技术.坦克大战1

    用的是Access数据库,安全性不够好,性能也不够强大:   躲在这里,坦克很少过来,做了一个随机数: 把得分的记录保存在数据库里面: SQLServer2005中型数据库:    (x,y)坐标:     800x600:     表示计算机屏幕上的每一行由800个点组成,共有600行:   共有480000个像素:   java绘图技术:   绘图一般在JPane上画: 覆盖JPanel的paintat方法 Graphics是一个图形画笔类,绘图的重要类,可以理解为一只画笔 supe

JAVA入门到精通-第72讲-学生管理系统4-model 2模式(1)

删除.查询.添加.修改: -修改: 每个字段都可能修改: //给?赋值 //在prepareStatement语句后面赋值才好用 //修改完了,更新数据 目前为止,已经完成了增删改查-Model1模式 最大特点: 界面和业务逻辑操作是放在一起的: 优点:简单,开发方便: 缺点:代码复用性不高: 中大型项目可读性差,可维护性不高: 前台后端混杂在一起的: 比如:"数据库密码换了, 所有涉及到数据库的地方都需要发生变化" =================================