【高额奖赏】用java实现文件操作。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了【高额奖赏】用java实现文件操作。相关的知识,希望对你有一定的参考价值。
编写一个文件系统,通过控制台的输入内容进行文件操作:1-创建文件(即按下1键,则创建文件txt,后面以此类推),2-删除文件,3-复制文件和4-根据输入文件名称,读取文件内容执行对应的指令。当用户输入1时,会读取用户下一行的输入,根据用户的名称和后续输入创建一个文件并将输入录入文件;当用户输入2时,会检索当前目录下的文件,如果文件存在,则删除文件,否则,提示文件不存在;当用户输入3时,则读取用户输入的文件名称并进行复制,并在文件名后加.copy标注;当用户输入4,会查找当前目录下的文件,如果文件存在,则执行文件的内容;当用户输入”exit”并在后续输入“Y”则退出系统。
1、执行代码如下,因不支持插入代码故放图片
2、执行结果
public static void main(String[] args) throws IOException
Scanner scanner = new Scanner(System.in);
String inputString = "";
String fileName = "";
System.out.println("请输入操作指令:1.创建文件;2.删除文件;3.复制文件;4.读取文件;exit:退出");
while(scanner.hasNextLine())
inputString = scanner.nextLine();
if("1".equals(inputString))
System.out.println("已选择1:创建文件,请输入文件名称");
fileName = scanner.nextLine();
File file = new File(fileName+".txt");
if(!file.exists())
file.createNewFile();
System.out.println("文件【"+fileName+"】创建成功,请输入文件内容,回车键结束输入");
String fileText = scanner.nextLine();
FileOutputStream fileOutputStream = new FileOutputStream(file);
fileOutputStream.write(fileText.getBytes());
fileOutputStream.close();
System.out.println("文件写入成功");
System.out.println("请输入操作指令:1.创建文件;2.删除文件;3.复制文件;4.读取文件;exit:退出");
else if("2".equals(inputString))
System.out.println("已选择2:删除文件,请输入要删除文件名称");
fileName = scanner.nextLine();
File file = new File(fileName+".txt");
if(file.exists())
file.delete();
System.out.println("文件删除成功");
else
System.out.println("文件"+fileName+"不存在");
System.out.println("请输入操作指令:1.创建文件;2.删除文件;3.复制文件;4.读取文件;exit:退出");
else if("3".equals(inputString))
System.out.println("已选择3:复制文件,请输入要复制文件名称");
fileName = scanner.nextLine();
File file = new File(fileName+".txt");
if(file.exists())
InputStream in = null;
OutputStream out = null;
try
in = new FileInputStream(new File(fileName+".txt"));
out = new FileOutputStream(new File(fileName+".copy.txt"));
byte[] buffer = new byte[1024];
int len;
while ((len = in.read(buffer)) > 0)
out.write(buffer, 0, len);
finally
System.out.println("复制成功");
if(in != null)in.close();
if(out != null)out.close();
else
System.out.println("文件不存在,无法复制");
System.out.println("请输入操作指令:1.创建文件;2.删除文件;3.复制文件;4.读取文件;exit:退出");
else if("4".equals(inputString))
System.out.println("已选择4:读取文件");
File file = new File(fileName+".txt");
if(file.exists())
InputStream in = null;
try
in = new FileInputStream(file);
int tempbyte;
String str = "";
while ((tempbyte = in.read()) != -1)
str = str+(char)tempbyte;
System.out.println(str);
in.close();
finally
if(in != null)in.close();
else
System.out.println("未找到文件");
System.out.println("请输入操作指令:1.创建文件;2.删除文件;3.复制文件;4.读取文件;exit:退出");
else if("exit".equals(inputString))
break;
else
System.out.println("输入不合法,请重新输入");
System.out.println("请输入操作指令:1.创建文件;2.删除文件;3.复制文件;4.读取文件;exit:退出");
scanner.close();
System.out.println("文件系统已退出...");
java 内存操作流
操作内存流的时候(从读取出来,注意一定要把真正的数据用toByteArray或者toCharArray将数据读出来)
之前的文件操作流是以文件的输入输出为主的,当输出的位置变成了内存,那么就称为内存操作流。此时要使用内存流完成内存的输入和输出操作。
如果程序运行过程中要产生一些临时文件,可采用虚拟文件方式实现;
直接操作磁盘的文件很耗性能,使用内存流可以提升性能;jdk里提供了内存流可实现类似于内存虚拟文件的功能。
ByteArrayInputStream:将内容写到内存中 CharArrayReader
ByteArrayOutputStream:将内存中的数据写出 CharArrayWriter
ByteArrayInputStream:构造方法:
public ByteArrayInputStream(byte[] buf):全部内容
public ByteArrayInputStream(byte[] buf,int offset,int length):指定范围的内容
ByteArrayOutputStream:
public ByteArrayOutputStream()
我的总结:内存流操作:先把数据写到内存中去,然后再从内存中读取出来!提升了性能!
例子
//此处用的是内存字节流(写入加输出)
package june6D;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
public class ByteArrayDemo7
public static void main(String[] args) throws IOException
String s = "java is a good language";
ByteArrayOutputStream bos = new ByteArrayOutputStream();//输出流
bos.write(s.getBytes());
// 已经把信息写到了内存中
byte[] bys = bos.toByteArray();// 得到真正的数据
ByteArrayInputStream bis = new ByteArrayInputStream(bys);//输入流,需要源。
byte[] b = new byte[1024];
int len;
while ((len = bis.read(b)) != -1)
String data = new String(b, 0, len);
System.out.println(data);
package june6D;
import java.io.CharArrayReader;
import java.io.CharArrayWriter;
public class CharArrayDemo8
public static void main(String[] args) throws Exception
// 用内存字符流先把数据保存到内存中,然后从内存中取出数据
String s = "河南城建学院";
CharArrayWriter cw = new CharArrayWriter();
cw.write(s);// 数据写到了内存中
char[] ch = cw.toCharArray();
CharArrayReader cr = new CharArrayReader(ch);
char[] b = new char[1024];
int len;
while ((len = cr.read(b)) != -1)
String data = new String(b, 0, len);
System.out.println(data);
以上是关于【高额奖赏】用java实现文件操作。的主要内容,如果未能解决你的问题,请参考以下文章