java文件操作输入输出
目录
1.使用Java的输入、输出流将一个文本文件的内容按行读出,每读出一行就顺序添加行号,并写入到另一个文件中。
2.使用RandomAccessFile流将一个文本文件倒置读出。
3.请分别使用不带缓冲区和带缓冲区的字节流复制图片(或者音频或者视频)文件。
一、实验目的
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) 使用字节流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");
-
}
-
}
-
}
每文一语
学会理性输入,感性输出,才会有一种好的循环!
本文幸运色是紫色哟!每一种思考都是一种深深的紫色回忆!
文章来源: wxw-123.blog.csdn.net,作者:王小王-123,版权归原作者所有,如需转载,请联系作者。
原文链接:wxw-123.blog.csdn.net/article/details/112939902
- 点赞
- 收藏
- 关注作者
评论(0)