JAVA 学习随笔记录 (九) 输入输出流

输入输出流

输入流

JAVA中输入输出流有关的类都放在java.io包中,所有与输入流有关的类都是抽象类InputStream(字节输入流)或抽象类Reader(字符输入流)的子类。

InputStream类是字节输入流的抽象类,是所有字节输入流的父类,它是处理单字节的,不可以处理字符。常见方法如下:

read() 从输入流中读取数据的下一个字节,返回一个int值。

read(byte[] b)从输入流中读入一定长度的字节,并以整形参数返回。

Read类,JAVA中的字符大多是unicode双字节编码,故对这些的处理只能通过Read类来实现。

输出流

OutputStream类,是字节输出流的抽象类,常见方法:

write(int b)   将指定的字节写入此输出流

write(byte[] b)将指定的b个字节写入到输出流

Write类,是字符输出流的抽象对象,是所有字符输出流的父类,常见方法:

append(char c) 将指定的字符添加到此writer

write()将字符写入此输出流

File类

File类是java.io中用来操作文件的类,通过调用file类中的方法,可以实现对文件的创建、删除、重命名,并且获得文件的相关属性。

创建一个文件对象

1.File (String pathname)  根据传入的路径名称创建文件对象(包含文件名)

2.File (String parent,String child) 根据传入的父路径和子路径创建文件对象,父路径为loc,子路径为文件名

3.File(File f,String child)  根据传入的父文件对象和子路径名称创建文件对象。

文件的操作

方法 返回值 说明
canRead() bool 文件是否可读
canWrite() bool 文件是否可写
createNewFile() bool 创建一个新文件
delete() bool 删除文件
exists() bool 判断文件是否存在
getAbsolutePath() String 获取文件绝对路径
getName() String 获取文件名称
getParent() String 获取文件的父路径
getPath() String 获取文件路径名字符串
getFreeSpace() long 返回路径命中未分配字节数
getTotalSpace() long 返回抽象路径名指定分区大小
length() long 返回文件长度
isFile() bool 判断是不是文件
isHidden() bool 判断文件是否是隐藏文件
LastModified() long 获取文件最后修改时间
renameTo(File dest) bool 重命名文件
setLastModified(long time) bool 设置文件最后一次修改时间
setReadOnly() bool 将文件设置为只读

例:使用文件File类进行常规操作:

package unit2;

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

public class FileTeat {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        File file=new File("F:/IE浏览器下载/test.txt");
        if(!file.exists()) {
            System.out.println("未在指定目录下找到文件名为test的文件!正在创建.........");
            try {
                file.createNewFile();
                
            }catch(Exception e) {
                e.getStackTrace();
            }
            System.out.println("文件test已经成功创建!");
            
        }
        else {
            System.out.println("已经找到文件test!");
            String number="123456789";
            System.out.println("请输入文件的密码:");
            Scanner sc=new Scanner(System.in);
            String code=sc.next();
            if(file.isFile()&&file.canRead()&&number.equals(code)) {
                System.out.println("文件可读!正在读取文件中相关信息........");
                String filename=file.getName();
                String Path=file.getAbsolutePath();
                boolean hidden=file.isHidden();
                long len=file.length();
                long tempTime=file.lastModified();
                SimpleDateFormat sdf=new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
                Date date=new Date(tempTime);
                String time=sdf.format(date);
                System.out.println("文件名:"+filename);
                System.out.println("文件的绝对路径:"+Path);
                System.out.println("文件是否为隐藏文件:"+hidden);
                System.out.println("文件的长度:"+len);
                System.out.println("文件最后的修改时间:"+time);
                file.delete();
                System.out.println("文件的使命已经完成,成功删除该文件!");
            }
            else {
                System.out.println("密码错误!不可读!");
            }
            
        }
    }

}
 

 文件夹的操作

文件夹的操作主要有判断文件夹是否存在、创建文件夹、删除文件夹、获取文件夹中的子文件夹和子文件等

常见方法如下:
 

方法 返回值 说明
isDirectory() boo 判断是不是文件夹
list() String[ ] 返回字符串数组,指明此此抽象路径名称中文件和目录
list(FilenameFilter filter) String[ ] 返回字符串数组,指明此此抽象路径名称中满足过滤器的文件和目录
listFiles() File[ ] 返回路径中的文件数组
listFiles(FileFilter filter) File[ ] 返回满足过滤器的文件和目录的文件数组
mkdir() bool 创建此抽象路径指定的目录
mkdirs() bool 创建此抽象路径名指定的目录,包括必须存在的父目录

例:文件夹的相关操作实例:

package unit2;

import java.io.File;

public class FolderTest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String Path="F:/IE浏览器下载";
        for(int i=0;i<10;i++) {
            File folder= new File(Path+"\\"+i);
            if(!folder.exists()) {
                folder.mkdirs();
            }
            
        }
        System.out.println("文件夹创建完成请进入F:/IE浏览器下载 查看!文件夹列表如下:");
        File file=new File("F:\\");
        File[] files=file.listFiles();
        for(File folder:files) {
            if(folder.isFile()) {
                System.out.println(folder.getName()+"文件");
            }
            else if(folder.isDirectory()) {
                System.out.println(folder.getName()+"文件夹");
            }
        }
    }

}

 文件输入输出流

JAVA中读取文件内容使用的是FileInputStream类,写入文件采用的是FileOutputStream类,常见构造方法如下:

FileInputStream(String name)  使用给定的文件名name创建一个FileInputStream对象。

FileInputStream(File file)  使用File对象创建FileInputStream对象,该方法允许把文件连接输入流之前对文件做进一步分析。

FileOutputStream(File file)  

例:使用文件输入输出流完成按字节写入读出

package unit2;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

public class FileStreamTest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        File file=new File("word.txt");
        try {
            FileOutputStream out=new FileOutputStream(file);
            String contents="hhu计算机的cx同学很菜";
            byte[] con=contents.getBytes();
            out.write(con);
            out.close();
        }catch(Exception e) {
            e.getStackTrace();
        }
        
        try {
            FileInputStream in=new FileInputStream(file);
            byte[] bt=new byte[1024];
            int len=in.read(bt);
            System.out.println("文件中的信息是:"+new String(bt,0,len));
            in.close();
        }catch(Exception e) {
            e.getStackTrace();
        }
    }

}

 

 FileRead类和FileWriter类

与字节输入输出流声明方法一样,不过此处传输是按字符进行写入读出,而并非按字节。

例:采用字节输入输出流完成操作:

package unit2;

import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.Scanner;

public class ReaderAndWriter {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        while(true) {
            try {
                File file=new File("word.txt");
                if(!file.exists()) {
                    file.createNewFile();
                }
                System.out.println("请输入要执行的事务编号:1.写入文件  2.读出文件");
                Scanner sc=new Scanner(System.in);
                int choice=sc.nextInt();
                switch(choice) {
                case 1:
                    System.out.println("请输入您要写入的内容:");
                    String tempstr=sc.next();
                    FileWriter fw=null;
                    try {
                        fw=new FileWriter(file,true);
                        fw.write(tempstr+"\r\n");
                    }catch(Exception e) {
                        e.getStackTrace();
                    }finally {
                        fw.close();
                    }
                    System.out.println("信息已经成功写入!");
                    break;
                case 2:
                    FileReader fr=null;
                    if(file.length()==0) {
                        System.out.println("该文件为空文件!");
                    }
                    else {
                        fr=new FileReader(file);
                        char[] info=new char[1024];
                        int hasread=-1;
                        while((hasread=fr.read(info))!=-1){
                            System.out.println("文件中的内容是:"+new String(info,0,hasread));
                        }
                    }
                    fr.close();
                }
            }catch(Exception e) {
                e.getStackTrace();
            }
        }
    }

}

发布了15 篇原创文章 · 获赞 8 · 访问量 918

猜你喜欢

转载自blog.csdn.net/caicai779369786/article/details/90235913
今日推荐