java开发坦克大战.doc

上传人:w****2 文档编号:6590616 上传时间:2020-02-29 格式:DOC 页数:26 大小:260.50KB
返回 下载 相关 举报
java开发坦克大战.doc_第1页
第1页 / 共26页
java开发坦克大战.doc_第2页
第2页 / 共26页
java开发坦克大战.doc_第3页
第3页 / 共26页
点击查看更多>>
资源描述
坦克大战游戏演示为什么选择这个项目1、好玩2、涉及到java各个方面的技术 1、java面向对象编程;2、界面编程;3、绘图技术;4、多线程;5、文件i/o操作;6、数据库3、巩固旧知识,学习新知识java绘图坐标体系绘图坐标本系-介绍坐标原点位于左上角,以像素为单位。像素是计算机屏幕上最小的显示单位。在java的坐标系中,第一个是X坐标,表示当前位置为水平方向,距离坐标原点X个像素;第二个是Y坐标,表示当前位置为垂直方向,距离坐标原点Y个像素。坐标体系-像素 计算机在屏幕上显示的内容都是由屏幕上的每一个像素组成的。例如,计算机显示器的分辨率是800600,表示计算机屏幕上的每一行由800个点组成,共有600行,整个计算机屏幕共有480000个像素。现在的计算机可以支持更高的分辨率,也就是说,屏幕上可以显示更多的像素。因此,像素是一个密度单位,而厘米是长度单位,两者无法比较。绘图原理(1)Window013.javaComponent类提供了两个和绘图相关最重要的方法:1、paint(Graphics g)绘制组件的外观2、repaint()刷新组件的外观当组件第一次在屏幕显示的时候,程序会自动的调用paint()方法来绘制组件import java.awt.*;import javax.swing.*;public class Window013 extends JFrame/定义组件MyPanel mp=null;public static void main(String args) Window013 th=new Window013();public Thread01()/创建组件mp=new MyPanel();/加入组件this.add(mp);/设置窗体this.setSize(400, 300);this.setLocationRelativeTo(null);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);/定义一个MyPanel(我自己的面板是用于绘图和显示绘图的区域)class MyPanel extends JPanel/重写(覆盖)JPanel的paint方法public void paint(Graphics g)/Graphics是绘图的重要类,可以把它理解成一只画笔/1、调用父类函数,完成初始化任务super.paint(g);/super.paint(g);这句话不能少System.out.println(Paint被调用);/用于测试绘图原理2paint调用/先画一个圆g.drawOval(10, 10, 30, 30);/drawOval方法是画圆-绘图原理(2)在以下情况paint()将会被调用:1、窗口最小化,再最大化2、窗口的大小发生变化3、repaint函数被调用java绘图技术-GraphicsGraphics类Window014.javaGraphics类你可以理解就是画笔,为我们提供了各种绘制图形的方法:多看jdk帮助文档1、画直线 drawLine(int x1,int y1,int x2,int y2);2、画矩形边框 drawRect(int x,int y,int width,int height);3、画椭圆边框 drawOval(int x,int y,int width,int height);4、填充矩形 fillRect(int x,int y,int width,int height);5、填充椭圆 fillOval(int x,int y,int width,int height);6、画图片 drawImage(Image img.int x,int y,.);7、画字符串 drawString(String str,int x,int y);8、设置画笔的字体 setFont(Font font);9、设置画笔的颜色 setColor(Color c);/java画图Graphics绘图类的使用方法import java.awt.*;import javax.swing.*;public class Window014 extends JFrame/定义组件MyPanel1 mp=null;public static void main(String args) Window014 th=new Window014();public Window014()/构建组件mp=new MyPanel1();/加入组件this.add(mp);/设置窗体this.setSize(400, 300);this.setLocationRelativeTo(null);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);/定义一个MyPanel(我自己的面板是用于绘图和显示绘图的区域)class MyPanel1 extends JPanel/重写(覆盖)JPanel的paint方法public void paint(Graphics g)/Graphics是绘图的重要类,可以把它理解成一只画笔/1、调用父类函数,完成初始化任务super.paint(g);/画一个直线g.drawLine(10, 10, 40, 10);/画矩形边框g.drawRect(50, 50, 40, 40);/画椭圆边框g.drawOval(100, 100, 60, 60);/画填充矩形g.setColor(Color.blue);g.fillRect(10, 150, 70, 70);/画填充椭圆g.setColor(Color.red);/设置画笔颜色g.fillOval(200, 50, 80, 80);-/画图Graphics画图类-画图片-画字Window015.javaimport java.awt.*;import javax.swing.*;public class Window015 extends JFrame/定义组件MyPanel1 mp=null;public static void main(String args) Window015 th=new Window015();public Window015()/构建组件mp=new MyPanel1();/加入组件this.add(mp);/设置窗体this.setSize(400, 300);this.setLocationRelativeTo(null);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);/定义一个MyPanel(我自己的面板是用于绘图和显示绘图的区域)class MyPanel1 extends JPanel/重写(覆盖)JPanel的paint方法public void paint(Graphics g)/Graphics是绘图的重要类,可以把它理解成一只画笔/1、调用父类函数,完成初始化任务super.paint(g);/在面板上画出图片Image im=Toolkit.getDefaultToolkit().getImage(Panel.class.getResource(/F22.jpg);/实现g.drawImage(im, 0, 0, 300, 200, this);/如何画出字g.setColor(Color.red);g.setFont(new Font(黑体,Font.BOLD,40);g.drawString(祖国万岁, 100, 100);/画弧形g.drawArc(100, 100, 120, 200, -50, -100); java事件处理机制如何通过键盘或鼠标的控制使Java程序中的功能有响应?java事件处理机制-初步介绍java事件处理是采取“委派事件模型”。所谓“委派事件模型”是指当事件发生时,产生事件的对象(即事件源),会把此“信息”传递给“事件的监听者”处理的一种方式,而这里所说的“信息”实际上就是java.awt.event事件类库里某个类所创建的对象,我们暂时把它称为“事件的对象”。 比如:当按下按钮时,就会在按钮触发一个“事件”,程序就会产生一个“事件对象”来表示这个事件,并把这个“事件对象”传递给“事件的监听者”,“事件的监听者”再根据“事件对象”的类型进行相应处理。为了让“产生事件的对象”比如按钮知道要把事件传递给哪一个“事件监听者”,我们必需先把“事件监听者”在“产生事件的对象”注册,这个操作也就是要告知“产生事件的对象”要把事件传递给它。实例Window016.java/* * 功能:事件处理机制 */import java.awt.*;import javax.swing.*;import java.awt.event.*;public class Window016 extends JFrame implements ActionListener/定义组件JPanel mp=null;JButton jb1,jb2;public static void main(String args) Window016 win=new Window016();/构造函数public Window016()/创建组件mp=new JPanel();jb1=new JButton(黑色);jb2=new JButton(红色);/设定布局管理器/加入组件mp.setBackground(Color.black);this.add(mp);this.add(jb1,BorderLayout.NORTH);this.add(jb2,BorderLayout.SOUTH);/猫类在监听Cat mycat1=new Cat();jb1.addActionListener(mycat1);jb2.addActionListener(mycat1);/注册监听jb1.addActionListener(this);jb2.addActionListener(this);/指定action命令jb1.setActionCommand(黑色);jb2.setActionCommand(红色);/JFrame窗体设置this.setTitle(事件处理机制);this.setSize(400, 300);this.setLocationRelativeTo(null);this.setVisible(true);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/对事件处理的方法public void actionPerformed(ActionEvent e) /判断是哪个按钮被点击if(e.getActionCommand().equals(黑色)System.out.println(点击了黑色按钮);mp.setBackground(Color.BLACK);else if(e.getActionCommand().equals(红色)System.out.println(点击了红色按钮);mp.setBackground(Color.RED);elseSystem.out.println(不知道);class Cat implements ActionListenerpublic void actionPerformed(ActionEvent arg0) if(arg0.getActionCommand().equals(黑色)System.out.println(Cat也知道你按下了黑色按钮);else if(arg0.getActionCommand().equals(红色)System.out.println(Cat也知道你按下了红色按钮);else System.out.println(Cat也不知道);-实例Window017.java/* * 功能:加深对事件处理机制的理解 * 1、通过上下左右键,来控制一个小球的移动。 */import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Window017 extends JFrame /设定组件MyPanels mp=null;public static void main(String args) Window017 win=new Window017();/构造函数public Window017()/构建组件mp=new MyPanels();/监听this.addKeyListener(mp);/加入组件this.add(mp);/设置窗体this.setTitle(键盘事件监听);this.setSize(400, 300);this.setLocationRelativeTo(null);this.setVisible(true);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/定义自己的面板class MyPanels extends JPanel implements KeyListenerint x=10,y=10;public void paint(Graphics g)super.paint(g);g.fillOval(x, y, 10, 10);public void keyPressed(KeyEvent e) /keyPressed代表键被按下System.out.println(被按下+(char)e.getKeyCode();if(e.getKeyCode()=KeyEvent.VK_DOWN)System.out.println(向下);y+;else if(e.getKeyCode()=KeyEvent.VK_UP)System.out.println(向上);y-;else if(e.getKeyCode()=KeyEvent.VK_LEFT)System.out.println(向左);x-;else if(e.getKeyCode()=KeyEvent.VK_RIGHT)System.out.println(向右);x+;/调用repaint()函数,来重绘界面this.repaint();public void keyReleased(KeyEvent e) /keyReleased代表键被弹起public void keyTyped(KeyEvent e) /keyTyped代表具体的值被输出java事件处理机制-深入理解前面提到了几个重要的概念1、事件源;2、事件;3、事件监听器这几个概念非常重要,必需要搞清楚。1、事件源 事件源是一个产生(或触发)事件的对象,比如前面的JButton的一个对象jb1。当这个事件源对象的某些状态以某种方式发生变化时,就会产生某种类型的事件(一个事件源可能会生成多个不同类型的事件)。如果某个组件(对象)希望得到事件源产生的事件,就需要在这个事件源上注册。2、事件事件就是承载事件源状态改变时的信息对象。或者说,事件是事件源事件监听器传输事件源状态信息的载体。在用户与GUI组件进行交互时就会生成事件,比如当鼠标在面板中移动时,就会生成一个鼠标移动事件的对象,而这个对象保存着当前鼠标在面板中位置信息。java.awt.event包和javax.swing.event包中定义了各种事件类型,常见的事件类有:事件类说明ActionEvent通常在按下按钮,或双击一个列表项或选中某个菜单时发生AdjustmentEvnet当操作一个滚动条时发生ComponentEvent当一个组件隐藏、移动、改变大小时发送ContainerEvent当一个组件从容器中加入或者删除时发生FocusEvent当一个组件获得或是失去焦点时发生ItemEvent当一个复选框或是列表项被选中时,当一个选择框或选择菜单被选中KeyEvent当从键盘的按键被按下,松开时发生MouseEvent当鼠标被拖动、移动、点击、按下.TextEvent当文本区和文本域的文本发生改变时发生WindowEvent当一个窗口激活、关闭、失效、恢复、最小化.3、事件监听器接口 事件源产生一个事件,可以传送给事件监听者处理,那么怎样才能编写一个事件监听者呢? 事件监听者实际上就是一个类,该类实现了某个事件监听器接口、比如前面我们案例中的MyPanel就是一个类,它实现了ActionListener接口,它就可以作为一个事件监听者,对接受到的事件进行处理。 事件监听器接口有多种,不同的事件监听器接口可以监听不同的事件,一个类可以实现一个事件监听接口,也可以实现多个监听接口,这些接口在java.awt.event和javax.swing.event包中定义。java事件处理机制-总结总结-事件编程步骤:1、编写事件处理类(事件监听者)2、根据需求给事件处理类实现监听器接口3、在事件处理中重写(实现)其事件处理的函数4、在事件源类中指定该事件的监听器(响应者)是谁注意事项:1、java采用委托机制处理事件2、java中的事件是分类的,比如对窗体事件、鼠标事件、按键事件、操作事件按按钮3、java中一个类要监听某个事件,则必需实现相应的事件监听接口4、事件监听接口有多种,程序员应当针对不同的情况,实现不同的监听接口,比如监听鼠标事件就应当实现MouseListener;要监听键盘事件,就应当实现KeyListener.5、在实现监听接口的类(事件监听类/者)中,需要重写处理函数,比如实现了ActionListener接口,就应当重写actionPerformed(ActionEvent e),可以参考前面的事件监听器接口表格6、在事件源中需要注册事件监听类。否则事件监听类接收不到事件源发生的事件。一个类要实现监听的步骤:a、实现相应的接口KeyListener/MouseListener/ActionListener/WindowListenerb、把接口的处理方法根据需要重新编写(Override)c、在事件源上注册监听d、事件传递是靠事件(类)对象实例Window018.java/* * 单事件源、多事件监听,多事件处理 */import java.awt.*;import javax.swing.*;import java.awt.event.*;public class Window018 extends JFrame/设定组件MyPanel mp=null;public static void main(String args) Window018 win=new Window018();public Window018()/创建组件mp=new MyPanel();/注册监听this.addMouseListener(mp);this.addMouseMotionListener(mp);this.addKeyListener(mp);this.addWindowListener(mp);/加入组件this.add(mp);/设置窗体this.setTitle(事件多监听多处理);this.setSize(400, 300);this.setLocationRelativeTo(null);this.setVisible(true);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/1、让MyPanel知道鼠标按下的消息,并且知道点击的位置(x,y)/2、让MyPanel知道哪个键按下了class MyPanel extends JPanel implements MouseListener, MouseMotionListener,KeyListener,WindowListenerpublic void paint(Graphics g)super.paint(g);/鼠标点击(mouseClicked)public void mouseClicked(MouseEvent e) System.out.println(鼠标点击了x=+e.getX()+y=+e.getY();/鼠标移动到MyPanel(mouseEntered)public void mouseEntered(MouseEvent e) System.out.println(鼠标移动到MyPanel上了);/鼠标离开MyPanel(mouseExited)public void mouseExited(MouseEvent e) System.out.println(鼠标离开MyPanel上了);/鼠标按下去(mousePressed)public void mousePressed(MouseEvent e) System.out.println(鼠标被按下了);/鼠标松开(mouseReleased)public void mouseReleased(MouseEvent e) System.out.println(鼠标被松开了);/鼠标拖拽(mouseDragged)public void mouseDragged(MouseEvent e) System.out.println(鼠标拖拽x=+e.getX()+y=+e.getY();/鼠标移动(mouseMoved)public void mouseMoved(MouseEvent e) System.out.println(鼠标移动时X=+e.getX()+Y=+e.getY();/键输入值(keyTyped),F(1-12)无响应public void keyTyped(KeyEvent e) System.out.println(按下了+e.getKeyChar()+键);/键按下(keyPressed)public void keyPressed(KeyEvent e) System.out.println(按下了+e.getKeyChar()+键);/键松开(keyReleased)public void keyReleased(KeyEvent e) System.out.println(按下了+e.getKeyChar()+键);/打开窗口(windowOpened)public void windowOpened(WindowEvent e) System.out.println(打开窗口(windowOpened);/窗口关闭(windowClosing)public void windowClosing(WindowEvent e) System.out.println(窗口关闭(windowClosing);/窗口关闭(windowClosed)public void windowClosed(WindowEvent e) System.out.println(窗口关闭(windowClosed);/窗口最小化(windowIconified)public void windowIconified(WindowEvent e) System.out.println(窗口最小化(windowIconified);/恢复窗口(windowDeiconified)public void windowDeiconified(WindowEvent e) System.out.println(恢复窗口(windowDeiconified);/激活窗口,使用窗口(windowActivated)public void windowActivated(WindowEvent e) System.out.println(激活窗口(windowActivated);/窗口停用,切换窗口(windowDeactivated)public void windowDeactivated(WindowEvent e) System.out.println(窗口停用(windowDeactivated);-线程-什么是进程进程-概念要解释线程,就必须明白什么是进程,就好象要搞清中国历史,就必须要了解春秋战国。什么是进程呢? 进程是指运行中的应用程序,每个进程都有自己独立的地址空间(内存空间),比如用户点击桌面的IE浏览器,就启动了一个进程,操作系统就会为该进程分配独立的地址空间。当用户再次点击左面的IE浏览器,又启动了一个进程,操作系统将为新的进程分配新的独立的地址空间。目前操作系统都支持多进程。要点:用户每启动一个进程,操作系统就会为该进程分配一个独立的内存空间。线程-概念在明白进程后,就比较容易理解线程的概念。什么是线程呢? 是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。线程有就绪、阻塞和运行三种基本状态。线程1、线程是轻量级的进程2、线程没有独立的地址空间(内存空间)3、线程是由进程创建的(寄生在进程)4、一个进程可以拥有多个线程-这就是我们常说的多线程编程5、线程有几种状态: a、新建状态(new) b、就绪状态(Runnable) c、运行状态(Running) d、阻塞状态(Blocked) e、死亡状态(Dead)线程有什么用处java程序中流传一句话,不会使用线程就别跟别人说自己学过java。目前绝大部分应用程序都会涉及到多并发的问题。只要应用程序涉及到并发,就离不开多线程编程。线程-如何使用在java中一个类要当作线程来使用有两种方法。1、继承Thread类,并重写run函数2、实现Runnable接口,并重写run函数因为java是单继承的,在某些情况下一个类可能已经继承了某个父类,这时在用继承Thread类方法来创建线程显然不可能java设计者们提供了另外一个方式创建线程,就是通过实现Runnable接口来创建线程。通过继承Thread类来实现建立线程实例Thread01.java/* * 演示如何通过继承Thread来开发线程 */public class Thread01 public static void main(String args) /创建一个 Cat对象Cat cat=new Cat();/启动线程cat.start();/.start()会导致run函数运行class Cat extends Threadint times=0;/重写run函数public void run()while(true)/休眠一秒/1000表示1000毫秒try Thread.sleep(1000);/sleep就会让该线程进入到Blocked阻塞状态,并释放资源。 catch (Exception e) e.printStackTrace();times+;System.out.println(hello,world!+times);if(times=10)/退出线程break;-通过Runnable接口来实现建立线程实例Thread02.java/* * 演示如何通过Runnable接口来开发线程 */public class Thread02public static void main(String args)Dog dog=new Dog();/创建线程Thread t=new Thread(dog);/启动线程t.start();class Dog implements Runnable/创建Runnable接口public void run()/重写run函数int times=0;while(true)tryThread.sleep(1000);catch (Exception e) e.printStackTrace();times+;System.out.println(hello,wrold!+times);if(times=10)break;-多线程实例演示Thread03.java/* *多线程Thread使用 *1、一个线程通过接收n来执行1+.+n得到和 *2、另一线程每隔1秒输出一次hello world! */public class Thread03 public static void main(String args) Pig pig=new Pig(10);Bird bird=new Bird(10);/建立线程Thread t1=new Thread(pig);Thread t2=new Thread(bird);/启动线程t1.start();t2.start();/打印hello world!class Pig implements Runnableint n=0;int times=0;public Pig(int n)this.n=n;public void run()while(true)try Thread.sleep(1000); catch (Exception e) e.printStackTrace();times+;System.out.println(我是一个线程,正在输出第+times+个hello world!);if(times=n)break;/算数学题class Bird implements Runnable/多线程时应使用implements接口来实现,不要使用extends继承int n=0;int res=0;int times=0;public Bird(int n)this.n=n;public void run() while(true)try Thread.sleep(1000); catch (Exception e) e.printStackTrace();res+=(+times);System.out.println(当前结果是:+res);if(times=n)System.out.println(最后的结果是:+res);break;-线程-区别线程-继承Thread VS 实现Runnable的区别 从java的设计来看,通过继承Thread或者实现Runnable接口来创建线程本质上没有区别,从jdk帮助文档我们可以看到Thread类本身就实现了Runnable接口,如果一定要说它们有什么区别,总结几点:1、尽可能使用实现Runnable接口的方式来创建线程2、在使用Thread的时候只需要new一个实例出来,调用start()方法即可以启动一个线程,如:Thread test=new Thread();test.start();3、在使用Runnable的时候需要先new一个实现Runnable的实例,之后用Thread调用,如:Test implements RunnableTest t=new Test();Thread test=new Thread(t);tset.start();线程-深入理解线程对象只能启动一个线程,见Thread04.java/* * 功能:使用线程的注意事项 * 不论继承Thread或实现Rnunable接口都不能使用start启同一个线程2次 */public class Thread04 public static void main(String args) Cat cat1=new Cat();cat1.start();/cat1.start();同一个线程,不能启动2次Dog dog1=new Dog();Thread t=new Thread(dog1);t.start();/t.start();同一个线程,不能启动2次/猫类class Cat extends Threadpublic void run()System.out.println(11);/狗类class Dog implements Runnablepublic void run()System.out.println(2);-结论:不管是通过继承Thread,还是通过实现Runnable接口创建线程,它们的一个对象只能启动(即:start()一次。否则就会有异常抛出。两种创建线程的方法的区别创建线程有两种方法:1、继承Thread;2、实现Runnable接口;这两种方法有什么区别?用实现Runnable接口的特点1、用实现Runnable接口的方法创建对象可以避免java单继承机制带来的局限;2、用实现Runnable接口的方法,可以实现多个线程共享同一段代码(数据);因此建议大家如果你的程序有同步逻辑需求,则使用Runnable的方法来创建线程。java线程的同步-提出问题多线程的并发,给我们编程带来很多好处,完成更多更有效率的程序。但是也给我们带来线程安全问题。java线程的同步-解决问题解决问题的关键就是要保证容易出问题的代码的原子性,所谓原子性就是指:当a线程在执行某段代码的时候,别的线程必须等到a线程执行完后,它才能执行这段代码。也就是排队一个一个解决。java处理线程两步的方法非常简单,只需要在需要同步的代码段,用:synchronized(Object)你要同步的代码即可。售票案例演示Thread05.java/* * 功能:使用线程的注意事项 * 线程并发同步锁synchronized(Object)的使用 */public class Thread05 public static void main(String args) /定义一个售票窗口TicketWindow tw1=new TicketWindow();/使用三个线程同时启动Thread t1=new Thread(tw1);Thread t2=new Thread(tw1);Thread t3=new Thread(tw1);t1.start();t2.start();t3.start();/售票窗口类class TicketWindow implements Runnable /共有2000张票private int nums=2000;private Dog myDog=new Dog();public void run() while(true)/出票速度是1秒出一张try Thread.sleep(1000); catch (Exception e) e.printStackTrace();/认为if else要保证其原子性/先判断是否还有票synchronized(myDog)/synchronized(this)为同步代码块if(nums0)/显示售票信息/Thread.currentThread().getName()得到当前线程的名字System.out.println(Thread.currentThread().getName()+正在售出第+nums+张票);nums-;else/售票结束break;class Dog-java线程的同步-解决问题对同步机制的解释: java任意类型的对象都有一个标志位,该标志位具有0、1两种状态,其开始状态为1,当某个线程执行了synchronized(Object)语句后,object对象的标志位变为0的状态,直到执行完整个synchronized语句中的代码块后,该对象的标志位又回到1状态。 当一个线程执行到synchronized(Object)语句的时候,先检查Object对象的标志位,如果为0状态,表明已经有另外的线程正在执行synchronized包括的代码,那么这个线程将暂时阻塞,让出CPU资源,直到另外的线程执行完相关的同步代码,并将Object对象的标志位变为状态,这个线程的阻塞就被取消,线程能继续运行,该线程又将Object的标志位变为0状态,防止其它的线程再进入相关的同步代码块中。 如果有多个线程因等待同一个对象的标志位面而处于阻塞状态时,当该对象的标志位恢复到1状态时,只会有一个线程能够进入同步代码执行,其它的线程仍处于阻塞的状态。特别说明:1、上面所说的标志位用术语讲就是对象锁,文件锁。数据库会有行锁、表锁等2、synchronized(object)/object(就是对象锁)可以是任意类型对象文件-什么是文件文件,对我们并不陌生,文件是数据源(保存数据的地方)的一种,比如大家经常使用的word文档、txt文件、excel文件.都是文件。文件最主要的作用就是保存数据,它既可以保存一张图片,也可以保存视频、声音.等文件流-基本概念文件在程序中是以流的形式来操作的。流:数据在数据源(文件)和程序(内存)之间经历的路径输入流:数据从数据源(文件)到程序(内存)的路径输出流:数据从程序(内存)到数据源(文件)的路径如何判断是输入流、输出流?以内存为参照,如果数据流向内存流动,则是输入流;反之,则是输出流。文件流-分类java流分为两种流1、字节流:可以用于读写二进制文件及任何类型文件byte2、字符流:可以用于读写文本文件,不能操作二进制文件字节流字符流输入InputStreamReader输出OutputStreamWriter常用io流-文件对象目的:文件数据源File类介绍(文件流对象中最为重要的File类,对File了解后对子类理解会更加容易)File类-使用Io01.java/* * File类的基本用法 */import java.io.*;/必需加载IO包public class Io01 public static void main(String args) /创建一个文件对象File f1=new File(e:aa.txt);/得到文件的路径System.out.println(文件路径+f1.getAbsolutePath();/得到文件的大小,字节数System.out.println(文件的大小+f1.length();/创建文件夹File f3=new File(e:ff);/判断文件夹是否存在if(f3.isDirectory()System.out.println(文件夹存在,不能创建!);else/创建文件夹f3.mkdir();
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 临时分类 > 人文社科


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!