Java IO流

Posted 菜菜小谭

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java IO流相关的知识,希望对你有一定的参考价值。

**************************第13章 IO**********************************

一. 什么是IO


I Input 输入

O Output 输出


I/O 输入输出流

 

输入输出是相对于 程序 而言的


输入: 数据从外界(文件或者其他数据源) 进入到程序,叫做输入..


输出: 数据从程序 流向 外界(文件或者其他数据源),叫做输出


这一章主要研究数据的位置的转移

 

二.why where


1. 搜狐新闻


程序员把每天采集好的新闻 从txt中读到程序员,然后显示到网页中或app客户端上


2. blog


照片的上传或删除

 

本地--------->服务器

 


三. how


数据源: 数据的来源,常见的数据源 文件、数据库、网络中、其他程序中

 

****************************文件的CRUD操作********************************

 

**********************一.新建一个文件(Create 增加)**************************


package com.chapter13.file;

import java.io.File;
import java.io.IOException;

/**
* 公司:蓝桥软件学院
* 作者:zhangzy
* 时间:2017年7月21日 上午9:26:34
* 功能:演示创建文件
*/
public class TestCreateFile {

public static void main(String[] args) {

//二.创建文件夹
//File类不仅代表文件也代表文件夹
File fileDirectory = new File("d:\jidi15\aaa");

//mkdir 只能创建一级目录
//mkdirs 可以创建多级目录
boolean directoryFlag = fileDirectory.mkdirs();

System.out.println(directoryFlag);

//一.新建文件
File file = new File("d:\jidi15\HelloWorld.txt");

boolean flag;
try {
//如果指定文件夹下没有该文件 会创建该文件
//如果已经存在了这个文件 不会再创建
flag = file.createNewFile();

if(flag){
System.out.println("文件创建成功");
}else{
System.out.println("没有创建任何文件");
}
} catch (IOException e) {

System.out.println("文件夹不存在");
e.printStackTrace();
}


}
}

 


**********************************删除文件***************************************


package com.chapter13.file;

import java.io.File;

/**
* 公司:蓝桥软件学院
* 作者:zhangzy
* 时间:2017年7月21日 上午10:05:04
* 功能:演示文件的删除
*/
public class TestFileDelete {

public static void main(String[] args) {

File file = new File("D:\jidi16\io");


if(file.exists()){

boolean flag = file.delete();
if(flag){
System.out.println("删除成功");
}else{

//当删除文件夹的时候 文件夹下有东西 会删除失败
System.out.println("删除失败");
}
}else{
System.out.println("文件不存在");
}
}
}


**********************************path分隔符和路径分隔符***************************************


一.path分隔符


windows ;

linux :

 

二.路径分隔符

windows D:jidi16\

linux /


/usr
/root

 

判断系统的小技巧,针对不同的系统写不同的代码

if(";".equals(File.pathSeperator)){ //

//上传到d:jidi16
}else if(":".equals(File.pathSeperator)){//linux

//usr
}

 

演示代码:


package com.chapter13.file;

import java.io.File;

public class TestSeparator {
public static void main(String[] args) {

//可以通过File.pathSeparator 判断操作系统的类型 根据结果 写不同的代码
// (Windows上为; Linux上为:)
System.out.println("path分隔符:(String类型)" + File.pathSeparator);
// (Windows上为;Linux上为:)
System.out.println("path分隔符:(char类型)" + File.pathSeparatorChar);

// (Windows上为 Linux上为/)
System.out.println("路径层次分隔符:(String类型)" + File.separator);

// (Windows上为 Linux上为/)
System.out.println("路径层次分隔符:(char类型)" +File.separatorChar);
}
}


**************************绝对路径和相对路径**********************************


绝对路径: 以盘符开头的路径 d:\jidi16\Hello.txt


相对路径 不以盘符开头的 ioHello.txt 路径不确定

 

**************************文件的常用方法**********************************


演示代码:


package com.chapter13.file;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
* 公司:蓝桥软件学院
* 作者:zhangzy
* 时间:2017年7月21日 上午10:47:44
* 功能:演示文件的常用方法
*/
public class TestFileMethod {
public static void main(String[] args) throws IOException{

//盘符 c:\ 开头的 叫绝对路径
//相对路径 不以路径分隔符 \ 开头的 相对于当前工程 相对于JiDi16这个文件夹
File fileDirection = new File("IO\aaa");

boolean fDirectionFlag = fileDirection.mkdirs();
if(fDirectionFlag){
System.out.println("创建目录成功");
}else{
System.out.println("创建目录失败");
}

File f = new File("IO\aaa\HelloIO.txt");

boolean flag = f.createNewFile();
if(flag){
System.out.println("创建文件成功");
}else{
System.out.println("创建文件失败");
}
System.out.println("文件名: " + f.getName());//返回文件名 HelloIO.txt
System.out.println("文件所在目录名 " + f.getParent());//返回文件所在目录名 IOaaa
System.out.println("相对路径: " + f.getPath());//返回相对路径 IOaaaHelloIO.txt
System.out.println("绝对路径: " + f.getAbsolutePath());//返回绝对路径 C:huanghuaiWorkSpaceHuangHuaiBkIOaaaHelloIO.txt
System.out.println("文件是否存在: " + f.exists());//文件是否存在
System.out.println("是否可写: " + f.canWrite());//文件是否可写
System.out.println("文件是否可读: " + f.canRead());//文件是否可读
System.out.println("是否为文件: " + f.isFile());//是否为文件
System.out.println("是否是目录: " + f.isDirectory());//是否是目录


//距离1970年1月1日 00:00:00 的毫秒数
System.out.println("文件的最后修改日期: " + f.lastModified());// 文件的最后修改日期
long lastModifiedTime = f.lastModified();

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

Date date = new Date(lastModifiedTime);

System.out.println("date:" + date);
String strDate = sdf.format(date);
System.out.println(strDate);
System.out.println("文件长度" + f.length());//文件长度
//System.out.println(f.delete());//删除文件

String[] strArr = fileDirection.list();//列出目录下所有的文件

for(String s:strArr){
System.out.println(s);
}

}
}










































































































































































以上是关于Java IO流的主要内容,如果未能解决你的问题,请参考以下文章

java的io中为啥有那么多种流啊?

Java之IO流总结

java IO流 IO流概述

Java 之IO流及应用

java IO流

Java IO流