首页后端开发其他后端知识java文件操作如何学习,输入输出结构是怎样的

java文件操作如何学习,输入输出结构是怎样的

时间2024-03-24 18:12:03发布访客分类其他后端知识浏览1180
导读:这篇文章给大家介绍了“java文件操作如何学习,输入输出结构是怎样的”的相关知识,讲解详细,步骤过程清晰,对大家进一步学习和理解“java文件操作如何学习,输入输出结构是怎样的”有一定的帮助,希望大家阅读完这篇文章能有所收获。下面就请大家跟...
这篇文章给大家介绍了“java文件操作如何学习,输入输出结构是怎样的”的相关知识,讲解详细,步骤过程清晰,对大家进一步学习和理解“java文件操作如何学习,输入输出结构是怎样的”有一定的帮助,希望大家阅读完这篇文章能有所收获。下面就请大家跟着小编的思路一起来学习一下吧。

 

 
目录
  • 一、实验目的
  • 二、实验代码
    • 1.使用Java的输入输出
    • 2.使用RandomAccessFile流将一个文本文件倒置读出
    • 3.请分别使用不带缓冲区和带缓冲区的字节流复制图片(或者音频或者视频)文件
    • 4.请分别使用不带缓冲区和带缓冲区的字符流复制文本文件

一、实验目的

  • 1. 掌握输入输出流的总体结构;
  • 2. 掌握流的概念;
  • 3. 掌握FileInputStream类、FileOutputStream类、FileReader类、FileWriter类的构造方法、常用方法的使用;
  • 4. 了解各种流(包括文件流、管道流、连接文件、过滤流、对象的序列化、随机访问)的使用。

二、实验代码

1.使用Java的输入输出

使用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) 使用字节流FileInputStream、FileOutputStream实现复制;
  • (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) 使用字符流FileReader、FileWriter实现复制;
  • (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");

}

}

}
    



以上就是关于“java文件操作如何学习,输入输出结构是怎样的”的相关知识,感谢各位的阅读,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注网络,小编每天都会为大家更新不同的知识。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: java文件操作如何学习,输入输出结构是怎样的
本文地址: https://pptw.com/jishu/652231.html
PHP如何处理网站的高并发、大流量、大存储问题 PHP中对象池模式的目的是什么,如何应用

游客 回复需填写必要信息