java文件操作输入输出

简介: java文件操作输入输出

目录

一、实验目的

二、实验代码

1.使用Java的输入、输出流将一个文本文件的内容按行读出,每读出一行就顺序添加行号,并写入到另一个文件中。

2.使用RandomAccessFile流将一个文本文件倒置读出。

3.请分别使用不带缓冲区和带缓冲区的字节流复制图片(或者音频或者视频)文件。

4.请分别使用不带缓冲区和带缓冲区的字符流复制文本文件。



一、实验目的

1. 掌握输入输出流的总体结构;

2. 掌握流的概念;

3. 掌握FileInputStream类、FileOutputStream类、FileReader类、FileWriter类的构造方法、常用方法的使用;

4. 了解各种流(包括文件流、管道流、连接文件、过滤流、对象的序列化、随机访问)的使用。

二、实验代码

1.使用Java的输入、输出流将一个文本文件的内容按行读出,每读出一行就顺序添加行号,并写入到另一个文件中。

package 作业练习.test4;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
import java.io.File;
public class FileScanner {
    public static void main(String[] args) throws Exception{
        System.out.print("请输入文件名:");
        Scanner reader = new Scanner(System.in);
        String fileName = reader.nextLine();
        File f = new File("E:\\Intellij IDEL\\project\\src\\"+fileName);
        Scanner fi = new Scanner(f);
        //输出:
        String sLine = null;
        int index  = 0;
        while(fi.hasNext()) {
            sLine = fi.nextLine();
            System.out.println(++index + " " + sLine);
            try {
                BufferedWriter out = new BufferedWriter(new FileWriter("test1.txt"));
                out.write(index + " " + sLine);
            } catch (IOException e) {
            }
        }
        System.out.println("文件创建成功!");
    }
}

2.使用RandomAccessFile流将一个文本文件倒置读出。

package 作业练习.test4;
import java.io.*;
public class test2 {
    public static void main(String []args) throws IOException
    {
        RandomAccessFile file =new RandomAccessFile("E:\\Intellij IDEL\\project\\src\\test4\\test.txt","r");
        long len =file.length();
        while(0!=len--)
        {
            file.seek(len);
            char ch =(char)file.read();
            System.out.print(ch);
        }
        file.close();
    }
}

3.请分别使用不带缓冲区和带缓冲区的字节流复制图片(或者音频或者视频)文件。

要求:(1) 使用字节流FileInputStreamFileOutputStream实现复制;

(2) 在定义字节缓冲区大小时,可以尝试16字节、256字节、1024字节等不同大小的缓冲区进行复制。

(3) 请统计采用不同方式进行文件复制所花的时间,并进行分析。

package 作业练习.test4;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class App14_3 {
    public static void main(String[] args) {
        File reader = new File("E:\\Intellij IDEL\\project\\src\\test4\\1.png");
        File writer = new File("\\Intellij IDEL\\project\\src\\test4\\2.png");
        FileInputStream fis = null;
        try {
            fis = new FileInputStream(reader);
        } catch (FileNotFoundException e1) {
            e1.printStackTrace();
        }
        BufferedInputStream bis = new BufferedInputStream(fis);
        FileOutputStream fos = null;
        try {
            fos = new FileOutputStream(writer);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        BufferedOutputStream bos = new BufferedOutputStream(fos);
        byte[] b = new byte[256];
        int len = -1;
        try {
            while ((len = bis.read(b)) != -1) {
                bos.write(b, 0, len);
                bos.flush();
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                bos.close();
                fos.close();
                bis.close();
                fis.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
package 作业练习.test4;
import java.io.*;
public class test3 {
    public static void main(String []args) throws IOException
    {
// 带缓冲区的字节流拷贝一个文本文件
  FileInputStream fin =new FileInputStream("E:\\Intellij IDEL\\project\\src\\test4\\test.txt");
  FileOutputStream fout =new FileOutputStream("E:\\Intellij IDEL\\project\\src\\test4\\test1.txt");
  byte buf[] =new byte[2014];   //创建字节数组,作为临时缓冲
  if(fin.read(buf)!=-1)
  {
   fout.write(buf);
  }
  System.out.println("文件复制成功");
  fin.close();
  fout.close();
  /*带缓冲区的字符流拷贝一个文本文件
  FileReader fin =new FileReader("E:\Intellij IDEL\project\src\test4\test2.txt");
  BufferedReader din=new BufferedReader(fin) ;
  FileWriter fou =new FileWriter("E:\Intellij IDEL\project\src\test4\test.txt");
  BufferedWriter dou =new BufferedWriter(fou);
  char c[]=new char[1024];  //创建字符数组
  din.read(c);
  fou.write(c);
  System.out.println("文件复制成功");
  din.close();
  fou.close();
  fin.close();
  dou.close();
  */
    }
}

4.请分别使用不带缓冲区和带缓冲区的字符流复制文本文件。

要求:

(1) 使用字符流FileReaderFileWriter实现复制;

(2) 在定义字符缓冲区大小时,可以尝试16字符、256字符、1024字符等不同大小的缓冲区进行复制。

package 作业练习.test4;
import java.io.*;
public class App14_5 {
    static App14_5 test=new App14_5();
    public static String  openFile(String fileName){      //打开文件
        StringBuffer sb=null;
        FileInputStream fis=null;
        try {
            fis=new FileInputStream(fileName);  ; //实例化输入流对象
            byte b[]=new byte[1024];
            int len;
            sb=new StringBuffer();
            while( (len = fis.read(b))!=-1 ){         //读文件并判断是否到达文件尾
                String str=new String(b,0,len);
                sb.append(str);
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
        }
        return sb.toString();
    }
    public static boolean saveFile(String fileName,String content) throws IOException{
        boolean state=false;
        FileOutputStream fos=null;
        try {
            fos=new FileOutputStream(fileName); //实例化输出流对象
            //把content写入到文件中
            state=true;
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
        }
        return state;
    }
    public static boolean copyFile(String sourceFileName,String destinationFifleName){
        boolean sate =false;
        InputStream fis=null;
        OutputStream fos=null;
        try {
            fis=new FileInputStream(sourceFileName);
            fos=new FileOutputStream(destinationFifleName);
            int len;
            byte buffer[]=new byte[1024];
            //此处请填写多行
            len=fis.read(buffer);
            String str1=new String(buffer,0,len);
            byte[] b = str1.getBytes();
            fos.write(b);
            sate =true;
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            try {
                if(fis!=null) fis.close();
                if(fos!=null) fos.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        return sate;
    }
    public static void main (String args[]) {
        App14_5 test=new App14_5();
        test.copyFile("E:\\Intellij IDEL\\project\\src\\test4\\test.txt",
                "E:\\Intellij IDEL\\project\\src\\test4\\test3.txt");
    }
}
}
相关文章
|
7月前
|
Java
揭秘Java文件操作背后的惊天秘密:读写、复制、删除一网打尽!
【6月更文挑战第27天】Java文件操作涵盖读、写、复制和删除。例如,读文件使用`BufferedReader`和`FileReader`;写文件利用`BufferedWriter`和`FileWriter`;复制文件通过读写流实现;删除文件则依赖`Files.delete()`。以上代码示例展示了具体实现。
46 5
|
7月前
|
Java API
Java文件操作,你的电脑“硬盘”竟然可以这样玩?!
【6月更文挑战第27天】Java文件操作涵盖创建、读取、写入、复制、删除等。`java.io`和`java.nio.file`包提供API,如`BufferedReader/FileReader`用于读取,`BufferedWriter/FileWriter`用于写入,`Files.copy()`用于复制,`Files.delete()`用于删除文件。以上代码示例展示了这些功能的简单用法。
45 1
|
8月前
|
Java API
Java的文件操作:创建、读写与删除的技术性详解
Java的文件操作:创建、读写与删除的技术性详解
63 1
|
7月前
|
安全 Java 开发者
掌握Java文件操作,让你的代码“飞”起来!读写、复制、删除全攻略!
【6月更文挑战第27天】Java文件操作涵盖读写、复制、删除。使用NIO的`Files`类提升效率:读取文件用`newBufferedReader`实现逐行读,写入文件用`newBufferedWriter`,复制文件用`copy`方法,删除文件用`deleteIfExists`,确保安全。这些最佳实践优化了内存使用,简化了代码。
48 0
|
4月前
|
Java
Java文件操作
本文介绍了Java中`File`类的使用方法,包括构造方法、常见成员方法及其实现功能。`File`对象可以表示文件或文件夹,支持绝对路径和相对路径。构造方法有三种:基于完整路径、父级路径与子路径组合、`File`对象与字符串组合。成员方法涵盖判断类型、获取大小、获取路径、创建与删除文件/文件夹、获取文件列表、重命名等操作。文章通过示例代码详细展示了各个方法的应用场景及注意事项。
49 1
Java文件操作
|
7月前
|
监控 Java API
Java文件操作大揭秘:不只是读写,还有这些逆天技巧!
【6月更文挑战第27天】Java文件操作不仅包括基础的读写,还有NIO的文件过滤、锁定、映射以及压缩解压和文件变化监控。例如,使用Files.walk结合PathMatcher查找特定类型的文件,利用FileChannel进行文件锁定和内存映射以提升效率,借助ZipOutputStream压缩文件,以及用WatchService监听文件系统变化。这些高级技巧能提升开发效率。
41 3
|
7月前
|
Java API
惊呆了!Java文件操作竟能如此简单:一分钟学会读写、复制、删除!
【6月更文挑战第27天】Java编程中的文件操作简单易行。使用`java.io`包中的`FileInputStream`和`FileOutputStream`进行读写,例如写文件将字符串转为字节写入,读文件则循环读取字节。文件复制涉及两个流,从源文件读取后写入目标文件。删除文件只需调用`File`对象的`delete`方法。这些基本操作让Java文件处理变得直观且易于掌握。
53 1
|
7月前
|
存储 网络协议 Java
Java I/O 详解:基础、文件操作与 NIO 实践
Java I/O 详解:基础、文件操作与 NIO 实践
69 1
|
8月前
|
存储 缓存 Java
Java 文件 & 文件操作
Java 文件 & 文件操作
|
7月前
|
存储 安全 Java
Java文件操作,让你的代码更“有型”!读写、复制、删除全解析!
【6月更文挑战第27天】在Java中进行文件操作是程序基础功能之一,涉及读写、复制和删除。使用`FileReader/FileWriter`进行文本文件的读写,如示例所示,通过`try-with-resources`保证资源释放。文件复制利用`FileInputStream/FileOutputStream`,而删除文件则依赖`File`的`delete()`方法,确保条件安全执行。这些标准库类提供了高效且健壮的文件管理能力。
53 0