zoukankan      html  css  js  c++  java
  • 补充知识点

    '
    ' 回车,回到当前行的行首,而不会换到下一行,如果接着输出的话,本行以前的内容会被逐一覆盖;
    ' ' 换行,换到当前位置的下一行,而不会回到行首

    Thread类中run()和start()方法的区别如下:
    run()方法:在本线程内调用该Runnable对象的run()方法,可以重复多次调用;
    start()方法:启动一个线程,调用该Runnable对象的run()方法,不能多次启动一个线程;

    以机器的角度去想不是自己
    输入流是用来read的,输出流是用来write的
    输入、输出是相对于 JVM 来说的。

    从外部读取数据到 JVM 内存中,相对于 JVM 来说就是输入
    从 JVM 内存写数据到文件中,或者其他地方,相对于 JVM 来说就是输出

    程序在内存中运行,文件在磁盘上,把文件从磁盘上读入内存中来,这就需要输入流。反之,把内存中的数据写到磁盘上的文件就是输出流。


    一、问题 
    在使用FileInputStream时会遇到如下问题1和问题2。 
    问题1:
    java.io.FileNotFoundException: .xxxxxx.txt (系统找不到指定的路径。) at java.io.FileOutputStream.open(Native Method) at java.io.FileOutputStream.<init>(Unknown Source) at java.io.FileOutputStream.<init>(Unknown Source) at com.yaohong.test.InputStreamTest.fileInputStream(InputStreamTest.java:13) at com.yaohong.test.InputStreamTest.main(InputStreamTest.java:27)
    问题2:
    java.io.FileNotFoundException: .xxxx.txt (拒绝访问。) at java.io.FileOutputStream.open(Native Method) at java.io.FileOutputStream.<init>(Unknown Source) at java.io.FileOutputStream.<init>(Unknown Source) at com.yaohong.test.InputStreamTest.fileInputStream(InputStreamTest.java:13) at com.yaohong.test.InputStreamTest.main(InputStreamTest.java:27)

    二、分析 
    当遇到问题时,的确是当前所指定的文件不存在或者目录不存在。 
    当遇到第二个问题时,是因为你访问了一个文件目录,而不是文件,因此会抛出问题2的异常。

    三、解决办法 
    第一个的解决办法是,先判断一下当前文件是否存在,如果存在则略过,如果不存在,在创建,具体做法如下:

    //在填写文件路径时,一定要写上具体的文件名称(xx.txt),否则会出现拒绝访问。
    File file = new File("./mywork/work.txt");
    if(!file.exists()){
        //先得到文件的上级目录,并创建上级目录,在创建文件
        file.getParentFile().mkdir();
        try {
            //创建文件
            file.createNewFile();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    第二个的解决办法是,在填写文件的路径时一定要具体到文件,如下:

    Filefile = newFile("./mywork/work.txt");

    而不能写成:

    Filefile = newFile("./mywork/");

    四、源码(我的demo)

    1、文件输出流

    /**
     * 文件输出流方法
     */
    public void fileOutputStream() {
        File file = new File("./mywork/work.txt");
        FileOutputStream out = null;
        try {
            if (!file.exists()) {
                // 先得到文件的上级目录,并创建上级目录,在创建文件
                file.getParentFile().mkdir();
                file.createNewFile();
            }
    
            //创建文件输出流
            out = new FileOutputStream(file);
            //将字符串转化为字节
            byte[] byteArr = "FileInputStream Test".getBytes();
            out.write(byteArr);
            byteArr = null;
            out.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    
    }

    2、文件输入流方法

    /**
     * 文件输入流
     */
    public void fileInputStream() {
        File file = new File("./mywork/work.txt");
        FileInputStream in = null;
        //如果文件不存在,我们就抛出异常或者不在继续执行
        //在实际应用中,尽量少用异常,会增加系统的负担
        if (!file.exists())
            new FileNotFoundException();
            //return;
        try {
            in = new FileInputStream(file);
            byte bytArr[] = new byte[1024];
            int len = in.read(bytArr);
            System.out.println("Message: " + new String(bytArr, 0, len));
            in.close();
            bytArr = null;
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    一、问题 
    在使用FileInputStream时会遇到如下问题1和问题2。 
    问题1:

    java.io.FileNotFoundException: .xxxxxx.txt (系统找不到指定的路径。)
        at java.io.FileOutputStream.open(Native Method)
        at java.io.FileOutputStream.<init>(Unknown Source)
        at java.io.FileOutputStream.<init>(Unknown Source)
        at com.yaohong.test.InputStreamTest.fileInputStream(InputStreamTest.java:13)
        at com.yaohong.test.InputStreamTest.main(InputStreamTest.java:27)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    问题2:

    java.io.FileNotFoundException: .xxxx.txt (拒绝访问。)
        at java.io.FileOutputStream.open(Native Method)
        at java.io.FileOutputStream.<init>(Unknown Source)
        at java.io.FileOutputStream.<init>(Unknown Source)
        at com.yaohong.test.InputStreamTest.fileInputStream(InputStreamTest.java:13)
        at com.yaohong.test.InputStreamTest.main(InputStreamTest.java:27)
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    二、分析 
    当遇到问题时,的确是当前所指定的文件不存在或者目录不存在。 
    当遇到第二个问题时,是因为你访问了一个文件目录,而不是文件,因此会抛出问题2的异常。

    三、解决办法 
    第一个的解决办法是,先判断一下当前文件是否存在,如果存在则略过,如果不存在,在创建,具体做法如下:

    //在填写文件路径时,一定要写上具体的文件名称(xx.txt),否则会出现拒绝访问。
    File file = new File("./mywork/work.txt");
    if(!file.exists()){
        //先得到文件的上级目录,并创建上级目录,在创建文件
        file.getParentFile().mkdir();
        try {
            //创建文件
            file.createNewFile();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    第二个的解决办法是,在填写文件的路径时一定要具体到文件,如下:

    File file = new File("./mywork/work.txt");
    • 1

    而不能写成:

        File file = new File("./mywork/");
    • 1

    因为这样你访问的是一个目录,因此就拒绝访问。

    四、源码(我的demo)

    1、文件输出流

    /**
     * 文件输出流方法
     */
    public void fileOutputStream() {
        File file = new File("./mywork/work.txt");
        FileOutputStream out = null;
        try {
            if (!file.exists()) {
                // 先得到文件的上级目录,并创建上级目录,在创建文件
                file.getParentFile().mkdir();
                file.createNewFile();
            }
    
            //创建文件输出流
            out = new FileOutputStream(file);
            //将字符串转化为字节
            byte[] byteArr = "FileInputStream Test".getBytes();
            out.write(byteArr);
            byteArr = null;
            out.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    
    }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    2、文件输入流方法

    /**
     * 文件输入流
     */
    public void fileInputStream() {
        File file = new File("./mywork/work.txt");
        FileInputStream in = null;
        //如果文件不存在,我们就抛出异常或者不在继续执行
        //在实际应用中,尽量少用异常,会增加系统的负担
        if (!file.exists())
            new FileNotFoundException();
            //return;
        try {
            in = new FileInputStream(file);
            byte bytArr[] = new byte[1024];
            int len = in.read(bytArr);
            System.out.println("Message: " + new String(bytArr, 0, len));
            in.close();
            bytArr = null;
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    如有错误,还望指正,谢谢合作。

  • 相关阅读:
    刚装的vs无法运行正确的程序
    选择正确的C/C++ runtime library
    【转】how can i build fast
    【转】关于增量链接(incremental linking)
    VS升级后的配置问题
    获得system32等系统文件权限
    Java Web总结二十三发送邮件
    Java Web总结二十二投票系统
    Java Web总结二十一Listener监听器
    Java Web总结二十Filter、装饰设计模式
  • 原文地址:https://www.cnblogs.com/hanruyue/p/5912915.html
Copyright © 2011-2022 走看看