IO流读写
基本功能:
新建文件
查看列表
写文件
删除文件
查看文件
导入的包:
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Scanner;
import javax.swing.plaf.synth.SynthSeparatorUI;
下面新建一个类,然后在main函数里初始化一个方法,方法中用if来判断输入的值所相对应的功能板块。
public static void main(String[] args) {
init();//初始化方法
}
public static void init(){
Scanner in = new Scanner(System.in);
boolean flag = true;
System.out.println("========小说系统=======");
while(flag){
System.out.println("请选择:1 新建文件 2 查看文件列表 3 写文件 4 删除文件 5 查看文件内容 6 退出");
int i = in.nextInt();
if(i == 1){
//新建流程
createFile(in);
}else if(i == 2){
//查看文件列表
showFiles();
}else if(i == 3){
//写文件
writeFile(in);
}else if(i == 4){
//删除文件
removeFile(in);
}else if(i == 5){
//查看文件内容
showFileContent(in);
}else if(i == 6){
//退出
flag = false;
}
}
}
下面我会对每个板块的功能进行描述:
1.新建功能
//新建文件的方法
public static void createFile(Scanner in){
System.out.println("请输入文件名称:");
//给文件命名
String filename = in.next();
//这里的文件夹自己创建或者自己定义就好
File f = new File("e://io/"+filename+".txt");
try {
f.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
2.查看文件下的所有文件方法:
//查看文件列表的方法;
public static void showFiles(){
File file = new File("E://io");
//获取指定文件夹下的文件数组的特定方法
File[] files = file.listFiles();
//遍历文件夹下的所有文件名
for(File f:files){
System.out.println(f.getName());
}
}
3.写文件内容的方法
//写文件方法
public static void writeFile(Scanner in){
System.out.println("请输入要写的文件的名称:");
String filename=in.next();
System.out.println("请输入信息:");
String content=in.next();
try {
BufferedOutputStream out=null;
out=new BufferedOutputStream(new FileOutputStream("e://io/"+filename+".txt",true));
out.write(("\r\n\t "+content).getBytes());
//缓存流需要注意flush方法的使用,flush方法可在缓存区未满的情况下,将缓存内容写出到外部设备中
out.flush();
out.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
4.删除文件
//删除文件方法
public static void removeFile(Scanner in){
System.out.println("请输入你要删除的文件名:");
String filename = in.next();
File f = new File("e://io/"+filename+".txt");
if(f.exists()){
//判断文件是否存在
boolean b = f.delete();
if(b){
System.out.println("文件删除成功");
}
}else{
System.out.println("请重新选择主菜单");
}
}
5.查看文件内容的方法:
//查看文件内容的方法
public static void showFileContent(Scanner in){
System.out.println("请输入文件名字:");
String filename = in.next();
try {
BufferedInputStream bufferedInput = null;
bufferedInput = new BufferedInputStream(new FileInputStream("e://io/"+filename+".txt"));
int n;
byte[] buffer = new byte[1024];
String chunk = null;
// read():读入一个字节,当有中文的时候不可用,所以这里用数组来存每一个字符,最后转成字符串输出
// 从文件中按字节读取内容,到文件尾部时read方法将返回-1
while ((n = bufferedInput.read(buffer)) != -1) {
chunk = new String(buffer, 0, n);
System.out.print(chunk);
}
bufferedInput.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
6.全部源码
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Scanner;
import javax.swing.plaf.synth.SynthSeparatorUI;
public class System {
public static void main(String[] args) {
init();//初始化方法
}
public static void init(){
Scanner in = new Scanner(System.in);
boolean flag = true;
System.out.println("========欢迎使用双体系小说系统=======");
while(flag){
System.out.println("请选择:1 新建文件 2 查看文件列表 3 写文件 4 删除文件 5 查看文件内容 6 退出");
int i = in.nextInt();
if(i == 1){
//新建流程
createFile(in);
}else if(i == 2){
//查看文件列表
showFiles();
}else if(i == 3){
//写文件
writeFile(in);
}else if(i == 4){
//删除文件
removeFile(in);
}else if(i == 5){
//查看文件内容
showFileContent(in);
}else if(i == 6){
//退出
flag = false;
}
}
}
//新建文件的方法
public static void createFile(Scanner in){
System.out.println("请输入文件名称:");
//给文件命名
String filename = in.next();
File f = new File("e://io/"+filename+".txt");
try {
f.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//查看文件列表的方法;
public static void showFiles(){
File file = new File("E://io");
File[] files = file.listFiles();//获取指定文件夹下的文件数组
for(File f:files){
System.out.println(f.getName());
}
}
//写文件方法
public static void writeFile(Scanner in){
System.out.println("请输入要写的文件的名称:");
String filename=in.next();
System.out.println("请输入信息:");
String content=in.next();
try {
BufferedOutputStream out=null;
out=new BufferedOutputStream(new FileOutputStream("e://io/"+filename+".txt",true));
out.write(("\r\n\t "+content).getBytes());
//缓存流需要注意flush方法的使用,flush方法可在缓存区未满的情况下,将缓存内容写出到外部设备中
out.flush();
out.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//删除文件方法
public static void removeFile(Scanner in){
System.out.println("请输入你要删除的文件名:");
String filename = in.next();
File f = new File("e://io/"+filename+".txt");
if(f.exists()){
//判断文件是否存在
boolean b = f.delete();
if(b){
System.out.println("文件删除成功");
}
}else{
System.out.println("请重新选择主菜单");
}
}
//查看文件内容的方法
public static void showFileContent(Scanner in){
System.out.println("请输入文件名字:");
String filename = in.next();
try {
BufferedInputStream bufferedInput = null;
bufferedInput = new BufferedInputStream(new FileInputStream("e://io/"+filename+".txt"));
int n;
byte[] buffer = new byte[1024];
String chunk = null;
// read():读入一个字节
// 从文件中按字节读取内容,到文件尾部时read方法将返回-1
while ((n = bufferedInput.read(buffer)) != -1) {
chunk = new String(buffer, 0, n);
System.out.print(chunk);
}
bufferedInput.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
注:当然啦,只是实现了基本的功能,对于一些细节没有处理,比如输入的时候如果有字符怎么处理等情况。这里也只限制于在正常情况下的输入输出。