皮皮网

皮皮网

【java电子相册源码】【青春源码体验套】【商业直播平台源码】bufferedwriter源码

时间:2024-12-28 20:41:33 分类:探索

1.求Java记事本源代码
2.exception和error的区别

bufferedwriter源码

求Java记事本源代码

       自己写的源码,能实现基本功能:

       import java.awt.BorderLayout;

       import java.awt.FileDialog;

       import java.awt.Font;

       import java.awt.datatransfer.Clipboard;

       import java.awt.datatransfer.DataFlavor;

       import java.awt.datatransfer.StringSelection;

       import java.awt.datatransfer.Transferable;

       import java.awt.datatransfer.UnsupportedFlavorException;

       import java.awt.event.ActionEvent;

       import java.awt.event.ActionListener;

       import java.io.BufferedReader;

       import java.io.BufferedWriter;

       import java.io.File;

       import java.io.FileNotFoundException;

       import java.io.FileReader;

       import java.io.FileWriter;

       import java.io.IOException;

       import javax.swing.JFrame;

       import javax.swing.JMenu;

       import javax.swing.JMenuBar;

       import javax.swing.JMenuItem;

       import javax.swing.JOptionPane;

       import javax.swing.JPanel;

       import javax.swing.JScrollPane;

       import javax.swing.JTextArea;

       import javax.swing.border.TitledBorder;

       /*因为根据个人的电脑路径可能有所偏差,没有源路径的源码java电子相册源码情况下,设置默认保存路径为D盘根目录下

        * 若要选择保存其他地方,源码青春源码体验套可以选择 另存为*/

       public class TestDemo extends JFrame {

        private static final long serialVersionUID = -L;

        private String url = null;//文件路径

        private String str=null;//复制或剪切 的源码商业直播平台源码字符串

        private StringSelection stringSelection=null;

        private Clipboard clipboard=new Clipboard(str);

        private Transferable transferable=null;

        private DataFlavor flavor=null;

        public TestDemo() {

        init();

        }

        private void init() {

        setTitle("我的记事本");

        setSize(, );

        setContentPane(createContentPane());//添加主面板

        }

       /*创建主面板*/

        private JPanel createContentPane() {

        JPanel pane = new JPanel(new BorderLayout());

        pane.add(BorderLayout.NORTH, createChocePane());//添加菜单栏

        pane.add(createAreaPane());//添加文本编辑区域

        return pane;

        }

       /*创建菜单栏,以及实现功能*/

        private JPanel createChocePane() {

        JPanel pane = new JPanel();

        JMenuBar menuBar1 = new JMenuBar();

        JMenu menu = new JMenu("文件");

        menuBar1.add(menu);

        JMenuItem menuIt1 = new JMenuItem("新建");

        JMenuItem menuIt2 = new JMenuItem("打开");

        JMenuItem menuIt3 = new JMenuItem("保存");

        JMenuItem menuIt4 = new JMenuItem("另存为");

        menu.add(menuIt1);

        menu.add(menuIt2);

        menu.add(menuIt3);

        menu.add(menuIt4);

        JMenuBar menuBar2 = new JMenuBar();

        JMenu menu2 = new JMenu("编辑");

        menuBar2.add(menu2);

        JMenuItem menuIt5 = new JMenuItem("复制");

        JMenuItem menuIt6 = new JMenuItem("剪切");

        JMenuItem menuIt7 = new JMenuItem("粘帖");

        menu2.add(menuIt5);

        menu2.add(menuIt6);

        menu2.add(menuIt7);

        JMenuBar menuBar3 = new JMenuBar();

        JMenu menu3 = new JMenu("帮助");

        menuBar3.add(menu3);

        JMenuItem menuIt8 = new JMenuItem("关于记事本");

        menu3.add(menuIt8);

        pane.add(menuBar1);

        pane.add(menuBar2);

        pane.add(menuBar3);

        menuIt1.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent e) {

        testArea.setText(null);

        }

        });

        menuIt2.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent arg0) {

        final FileDialog fd = new FileDialog(new JFrame(),源码php捕鱼源码下载 "查找文件",

        FileDialog.LOAD);

        fd.setVisible(true);

        if (fd.getDirectory() != null && fd.getFile() != null) {

        testArea.setText(null);

        url = fd.getDirectory() + fd.getFile();

        try {

        BufferedReader in = new BufferedReader(new FileReader(

        url));

        for (int i = 0;; i++) {

        testArea.append(in.readLine());

        if (in.read() == -1) {

        break;

        } else

        continue;

        }

        } catch (FileNotFoundException e) {

        e.printStackTrace();

        } catch (IOException e) {

        e.printStackTrace();

        }

        }

        }

        });

        menuIt3.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent e) {

        if (url==null) {

        url="D:\\新建 文本文档.txt";

        }

        File f = new File(url);

        BufferedWriter out = null;

        try {

        out = new BufferedWriter(new FileWriter(url));

        f.createNewFile();

        out.append(testArea.getText());

        out.flush();

        } catch (IOException e1) {

        e1.printStackTrace();

        } finally {

        try {

        out.close();

        } catch (IOException e1) {

        e1.printStackTrace();

        }

        }

        }

        });

        menuIt4.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent arg0) {

        FileDialog fd = new FileDialog(new JFrame(), "保存文本",

        FileDialog.SAVE);

        fd.setVisible(true);

        if (url!=null) {

        File f = new File(url);

        BufferedWriter out = null;

        try {

        f.createNewFile();

        out = new BufferedWriter(new FileWriter(url));

        out.append(testArea.getText());

        out.flush();

        } catch (IOException e) {

        e.printStackTrace();

        } finally {

        try {

        out.close();

        } catch (IOException e) {

        e.printStackTrace();

        }

        }

        }

        }

        });

        menuIt5.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent e) {

        str=testArea.getSelectedText();

        stringSelection=new StringSelection(str);

        clipboard.setContents(stringSelection, null);

        }

        });

        menuIt6.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent arg0) {

        str=testArea.getSelectedText();

        stringSelection=new StringSelection(str);

        clipboard.setContents(stringSelection, null);

        int start=testArea.getSelectionStart();

        int end=testArea.getSelectionEnd();

        testArea.replaceRange( null,start,end);

        }

        });

        menuIt7.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent e) {

        transferable=clipboard.getContents(this);

        flavor=DataFlavor.stringFlavor;

        if (transferable.isDataFlavorSupported(flavor)) {

        int start=testArea.getSelectionStart();

        int end=testArea.getSelectionEnd();

        testArea.replaceRange( null,start,end);

        int pos=testArea.getCaretPosition();

        try {

        str=(String)transferable.getTransferData(flavor);

        testArea.insert(str, pos);

        } catch (UnsupportedFlavorException e1) {

        e1.printStackTrace();

        } catch (IOException e1) {

        e1.printStackTrace();

        }

       }

        }

        });

        menuIt8.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent e) {

        JOptionPane.showMessageDialog(null,"功能简单,绝对原创 ");

        }

        });

        return pane;

        }

        JTextArea testArea;

        private JScrollPane createAreaPane() {

        JScrollPane pane = new JScrollPane();

        pane.setBorder(new TitledBorder("编辑区域"));

        testArea = new JTextArea();

        testArea.setFont(new Font("宋体",源码mybatis和spring源码 Font.BOLD, ));

        testArea.setLineWrap(true);

        pane.getViewport().add(testArea);

        return pane;

        }

        public static void main(String[] args) {

        TestDemo td = new TestDemo();

        td.setVisible(true);

        }

       }

exception和error的区别

       1.如图Exception 和 Error都继承自Throwable类,由jdk api文档中对该类的描述可以知道它是异常处理机制的基本组成类型。可以由虚拟机抛出或者编码者自行抛出(throw)

       jdk8中文发翻译Throwable类的描述:Throwable类是Java语言中所有错误和异常的Throwable类。 只有作为此类(或其一个子类)的实例的对象由Java虚拟机抛出,或者可以由Java throw语句抛出。 类似地,只有这个类或其子类可以是catch子句中的参数类型。

       2.Exception 和 Error 体现了 Java 平台设计者对不同异常情况的分类。Exception 是程序正常运行中,可以预料的意外情况,可能并且应该被捕获,进行相应处理。

       3.Error 是指在正常情况下,不大可能出现的情况,绝大部分的 Error 都会导致程序(比如 JVM 自身)处于非正常的、不可恢复状态。既然是非正常情况,所以不便于也不需要捕获,常见的比如 OutOfMemoryError 之类,都是 Error 的子类。

       4.Exception 又分为可检查(checked)异常和不检查(unchecked)异常,可检查异常在源代码里必须显式地进行捕获处理,这是编译期检查的一部分。前面我介绍的不可查的 Error,是 Throwable 不是 Exception。

       å¦‚何处理这些异常?

       åœ¨çŽ°å®žç¼–程中我们一般使用 try-with-resources 和 multiple catch来进行一些异常处理(便利的特性),在编译时期,会自动生成相应的处理逻辑,比如,自动按照约定俗成 close 那些扩展了 AutoCloseable 或者 Closeable 的对象。

       try-with-resources 是一种处理Closeable实现类关闭资源的一种写法,简单写了一个例子可以发现其实这就是一中语法,这种语法可以自动编译帮忙编译最后关闭流的操作:

       public static void main(String[] args) {

       try (BufferedReader br = new BufferedReader(new FileReader("a"));

       BufferedWriter writer = new BufferedWriter(new FileWriter("a"))) {

       // Try-with-resources

       } catch (IOException e) { // Multiple catch

       // Handle it

       }

       }

       ç¼–译后class

       public static void main(String[] args) {        try {

       BufferedReader br = new BufferedReader(new FileReader("a"));

       Throwable var2 = null;            try {

       BufferedWriter writer = new BufferedWriter(new FileWriter("a"));

       Object var4 = null;                if (writer != null) {                    if (var4 != null) {                        try {

       writer.close();

       } catch (Throwable var) {

       ((Throwable)var4).addSuppressed(var);

       }

       } else {

       writer.close();

       }

       }

       } catch (Throwable var) {

       var2 = var;                throw var;

       } finally {                if (br != null) {                    if (var2 != null) {                        try {

       br.close();

       } catch (Throwable var) {

       var2.addSuppressed(var);

       }

       } else {

       br.close();

       }

       }

       }

       } catch (IOException var) {

       }

       }

       å¼‚常处理的两个基本原则

       å°½é‡ä¸è¦æ•èŽ·ç±»ä¼¼ Exception 这样的通用异常,而是应该捕获特定异常

       è¿™æ˜¯å› ä¸ºåœ¨æ—¥å¸¸çš„开发和合作中,我们读代码的机会往往超过写代码,软件工程是门协作的艺术,所以我们有义务让自己的代码能够直观地体现出尽量多的信息,而泛泛的 Exception 之类,恰恰隐藏了我们的目的。另外,我们也要保证程序不会捕获到我们不希望捕获的异常。比如,你可能更希望 RuntimeException 被扩散出来,而不是被捕获。

       ä¸è¦ç”Ÿåžï¼ˆswallow)异常。这是异常处理中要特别注意的事情,因为很可能会导致非常难以诊断的诡异情况。

       å¦‚果我们不把异常抛出来,或者也没有输出到日志(Logger)之类,程序可能在后续代码以不可控的方式结束。没人能够轻易判断究竟是哪里抛出了异常,以及是什么原因产生了异常。

       åœ¨å†™ç¨‹åºæ—¶å¯ä»¥é€šè¿‡Objectsç±»(jdk提供),或者断言等提前判断问题,如空指针异常的一些值的处理Objects. requireNonNull(filename);而不是使用之后有问题再系统抛出异常,这可能就会不直观的找到问题所在。即:Throw early, catch late 原则

       å¸Œæœ›å¯¹æ‚¨æœ‰æ‰€å¸®åŠ©ï¼~