补充知识点

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

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

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

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

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

一、问题 在使用FileInputStream时会遇到如下问题1和问题2。 问题1:java.io.FileNotFoundException: .\xxx\xxx.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: .\xx\xx.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: .\xxx\xxx.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: .\xx\xx.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

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

时间: 2024-07-30 17:31:54

补充知识点的相关文章

16 [个人补充知识点]在Spring中定义了5中不同的事务隔离级别

在Spring中定义了5中不同的事务隔离级别: 1. ISOLATION_DEFAULT(一般情况下使用这种配置既可) ; 这是一个PlatfromTransactionManager默认的隔离级别,使用数据库默认的事务隔离级别. 2. ISOLATION_READ_UNCOMMITTED 4 p" L. I' F; k1 {) a. D( E5 ?: V这是事务最低的隔离级别,它充许别外一个事务可以看到这个事务未提交的数据.这种隔离级别会产生脏读,不可重复读和幻像读. 大部分数据库缺省的事物隔

Django练习——用户管理系统——补充知识点

补充知识点: 1.FBV 和 CBV views.py # 方法一:FBV def login(request): if request.method == "POST": user = request.POST.get("user") pwd = request.POST.get("pwd") c = models.Administrator.objects.filter(username=user,password=pwd).count()

30_补充知识点

枚举  什么是枚举   把一个事物所有可能的取值一一列举 怎样使用枚举 枚举的优缺点   代码更安全   书写麻烦 原码        也叫,符号—绝对值码   最高位0表示正,1表示负,其余二进制位是该数字的绝对值的二进制位     原码简单易懂   加减运算复杂   存在加减乘除四种运算,增加了CPU的复杂度   零的表示不唯一 反码   反码运算不便,也没有在计算机中应用 移码   移码表示数值平移n位,n称为移码量   移码主要用于浮点数的阶码的存储 补码   十进制转二进制    正整

with补充知识点

import threading,queue,time import contextlib @contextlib.contextmanager def fun(list_1,val): list_1.append(val) try: yield finally: list_1.remove(val) q = queue.Queue() q.put('alxe') li = [] with fun(li,1): q.get() class A: def __enter__(self): prin

优酷电视剧爬虫代码实现一:下载解析视频网站页面(3)补充知识点:XPath无效怎么办?

XPath无效怎么办?明明XPath是通过定位子节点,copy xpath得到的,理论上是正确的 XPath无效怎么办?明明XPath是通过按F12定位符再copy XPath得到的,可是放在代码里就是不对呢? 前提:优酷电视剧爬虫代码实现一:下载解析视频网站页面(2)工作量已经完成.基于这个基础,进一步完善代码 1.新建页面解析接口. package com.dajiangtai.djt_spider.service; import com.dajiangtai.djt_spider.enti

元素标签补充知识点

1.border 对于同一元素,边框交界处是斜线,如果边框颜色不一样的时候要注意一下,分别设置在两个元素上 2.line-height 每行文字的高度(文字在一行中上下居中) 那么把字体大小加上两行之间的间距,就是一个行高啦 3.font-family:"宋体"; 4.font:font-weight font-style font-size/line-height font-family; 如果用此复合样式,必须按此顺序写,然后红色是必须要写的,否则就别用font 5.letter-

Linux驱动面试题(刷题,补充知识点)

https://www.cnblogs.com/alantu2018/p/8461074.html https://www.cnblogs.com/alantu2018/p/8994603.html https://blog.csdn.net/yaolixiao001/article/details/80092350 原文地址:https://www.cnblogs.com/xuyong437/p/12233070.html

[小知识点]绝对路径与相对路径.

1, 绝对路径与相对路径:1.1 路径分为两种 第一种:绝对路径 (1)文件的完全路径, 比如:file:///C:/Users/asus/Desktop/1018/day01/code/图像标签.html 第二种:相对路径(*****) (1)一个文件相对于另外一个文件的位置 第一种情况:图片和html文件在一个文件夹下面 (1)在html中直接写图片的名称 第二种情况:图片在html的下层目录 (1)把html的完全路径和图片的完全路径写出来 html: C:\Users\asus\Desk

css布局补充学习及项目中的学习

一.css布局补充知识点 (一)块级元素 块级元素生成块级盒,块级盒分为块盒和块容器盒,常见块盒为<p><h1><div>, 表格和可替换元素不是块盒. (二)可替换元素 浏览器可根据其标签的元素与属性判断显示内容的.如<img>.<input>.<textarea>.<select>.<object>. (三)position:fixed Position:fixed 的包含块是视口. (四)Display的