基本功能:java
導入的包:數組
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.查看文件下的全部文件方法:code
//查看文件列表的方法; public static void showFiles(){ File file = new File("E://io"); //獲取指定文件夾下的文件數組的特定方法 File[] files = file.listFiles(); //遍歷文件夾下的全部文件名 for(File f:files){ System.out.println(f.getName()); } }
3.寫文件內容的方法rem
//寫文件方法 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.查看文件內容的方法:get
//查看文件內容的方法 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(); } } }
注:固然啦,只是實現了基本的功能,對於一些細節沒有處理,好比輸入的時候若是有字符怎麼處理等狀況。這裏也只限制於在正常狀況下的輸入輸出。it