资讯专栏INFORMATION COLUMN

基于java的IO流的文件读取系统

chunquedong / 1512人阅读

摘要:流读写基本功能新建文件查看列表写文件删除文件查看文件导入的包下面新建一个类,然后在函数里初始化一个方法,方法中用来判断输入的值所相对应的功能板块。这里也只限制于在正常情况下的输入输出。

IO流读写

基本功能:

新建文件

查看列表

写文件

删除文件

查看文件

导入的包:

</>复制代码

  1. import java.io.BufferedInputStream;
  2. import java.io.BufferedOutputStream;
  3. import java.io.File;
  4. import java.io.FileInputStream;
  5. import java.io.FileOutputStream;
  6. import java.io.IOException;
  7. import java.util.Scanner;
  8. import javax.swing.plaf.synth.SynthSeparatorUI;

下面新建一个类,然后在main函数里初始化一个方法,方法中用if来判断输入的值所相对应的功能板块。

</>复制代码

  1. public static void main(String[] args) {
  2. init();//初始化方法
  3. }
  4. public static void init(){
  5. Scanner in = new Scanner(System.in);
  6. boolean flag = true;
  7. System.out.println("========小说系统=======");
  8. while(flag){
  9. System.out.println("请选择:1 新建文件 2 查看文件列表 3 写文件 4 删除文件 5 查看文件内容 6 退出");
  10. int i = in.nextInt();
  11. if(i == 1){
  12. //新建流程
  13. createFile(in);
  14. }else if(i == 2){
  15. //查看文件列表
  16. showFiles();
  17. }else if(i == 3){
  18. //写文件
  19. writeFile(in);
  20. }else if(i == 4){
  21. //删除文件
  22. removeFile(in);
  23. }else if(i == 5){
  24. //查看文件内容
  25. showFileContent(in);
  26. }else if(i == 6){
  27. //退出
  28. flag = false;
  29. }
  30. }
  31. }

下面我会对每个板块的功能进行描述:
1.新建功能

</>复制代码

  1. //新建文件的方法
  2. public static void createFile(Scanner in){
  3. System.out.println("请输入文件名称:");
  4. //给文件命名
  5. String filename = in.next();
  6. //这里的文件夹自己创建或者自己定义就好
  7. File f = new File("e://io/"+filename+".txt");
  8. try {
  9. f.createNewFile();
  10. } catch (IOException e) {
  11. // TODO Auto-generated catch block
  12. e.printStackTrace();
  13. }
  14. }

2.查看文件下的所有文件方法:

</>复制代码

  1. //查看文件列表的方法;
  2. public static void showFiles(){
  3. File file = new File("E://io");
  4. //获取指定文件夹下的文件数组的特定方法
  5. File[] files = file.listFiles();
  6. //遍历文件夹下的所有文件名
  7. for(File f:files){
  8. System.out.println(f.getName());
  9. }
  10. }

3.写文件内容的方法

</>复制代码

  1. //写文件方法
  2. public static void writeFile(Scanner in){
  3. System.out.println("请输入要写的文件的名称:");
  4. String filename=in.next();
  5. System.out.println("请输入信息:");
  6. String content=in.next();
  7. try {
  8. BufferedOutputStream out=null;
  9. out=new BufferedOutputStream(new FileOutputStream("e://io/"+filename+".txt",true));
  10. out.write(("
  11. "+content).getBytes());
  12. //缓存流需要注意flush方法的使用,flush方法可在缓存区未满的情况下,将缓存内容写出到外部设备中
  13. out.flush();
  14. out.close();
  15. } catch (Exception e) {
  16. // TODO Auto-generated catch block
  17. e.printStackTrace();
  18. }
  19. }

4.删除文件

</>复制代码

  1. //删除文件方法
  2. public static void removeFile(Scanner in){
  3. System.out.println("请输入你要删除的文件名:");
  4. String filename = in.next();
  5. File f = new File("e://io/"+filename+".txt");
  6. if(f.exists()){
  7. //判断文件是否存在
  8. boolean b = f.delete();
  9. if(b){
  10. System.out.println("文件删除成功");
  11. }
  12. }else{
  13. System.out.println("请重新选择主菜单");
  14. }
  15. }

5.查看文件内容的方法:

</>复制代码

  1. //查看文件内容的方法
  2. public static void showFileContent(Scanner in){
  3. System.out.println("请输入文件名字:");
  4. String filename = in.next();
  5. try {
  6. BufferedInputStream bufferedInput = null;
  7. bufferedInput = new BufferedInputStream(new FileInputStream("e://io/"+filename+".txt"));
  8. int n;
  9. byte[] buffer = new byte[1024];
  10. String chunk = null;
  11. // read():读入一个字节,当有中文的时候不可用,所以这里用数组来存每一个字符,最后转成字符串输出
  12. // 从文件中按字节读取内容,到文件尾部时read方法将返回-1
  13. while ((n = bufferedInput.read(buffer)) != -1) {
  14. chunk = new String(buffer, 0, n);
  15. System.out.print(chunk);
  16. }
  17. bufferedInput.close();
  18. } catch (Exception e) {
  19. // TODO Auto-generated catch block
  20. e.printStackTrace();
  21. }
  22. }

6.全部源码

</>复制代码

  1. import java.io.BufferedInputStream;
  2. import java.io.BufferedOutputStream;
  3. import java.io.File;
  4. import java.io.FileInputStream;
  5. import java.io.FileOutputStream;
  6. import java.io.IOException;
  7. import java.util.Scanner;
  8. import javax.swing.plaf.synth.SynthSeparatorUI;
  9. public class System {
  10. public static void main(String[] args) {
  11. init();//初始化方法
  12. }
  13. public static void init(){
  14. Scanner in = new Scanner(System.in);
  15. boolean flag = true;
  16. System.out.println("========欢迎使用双体系小说系统=======");
  17. while(flag){
  18. System.out.println("请选择:1 新建文件 2 查看文件列表 3 写文件 4 删除文件 5 查看文件内容 6 退出");
  19. int i = in.nextInt();
  20. if(i == 1){
  21. //新建流程
  22. createFile(in);
  23. }else if(i == 2){
  24. //查看文件列表
  25. showFiles();
  26. }else if(i == 3){
  27. //写文件
  28. writeFile(in);
  29. }else if(i == 4){
  30. //删除文件
  31. removeFile(in);
  32. }else if(i == 5){
  33. //查看文件内容
  34. showFileContent(in);
  35. }else if(i == 6){
  36. //退出
  37. flag = false;
  38. }
  39. }
  40. }
  41. //新建文件的方法
  42. public static void createFile(Scanner in){
  43. System.out.println("请输入文件名称:");
  44. //给文件命名
  45. String filename = in.next();
  46. File f = new File("e://io/"+filename+".txt");
  47. try {
  48. f.createNewFile();
  49. } catch (IOException e) {
  50. // TODO Auto-generated catch block
  51. e.printStackTrace();
  52. }
  53. }
  54. //查看文件列表的方法;
  55. public static void showFiles(){
  56. File file = new File("E://io");
  57. File[] files = file.listFiles();//获取指定文件夹下的文件数组
  58. for(File f:files){
  59. System.out.println(f.getName());
  60. }
  61. }
  62. //写文件方法
  63. public static void writeFile(Scanner in){
  64. System.out.println("请输入要写的文件的名称:");
  65. String filename=in.next();
  66. System.out.println("请输入信息:");
  67. String content=in.next();
  68. try {
  69. BufferedOutputStream out=null;
  70. out=new BufferedOutputStream(new FileOutputStream("e://io/"+filename+".txt",true));
  71. out.write(("
  72. "+content).getBytes());
  73. //缓存流需要注意flush方法的使用,flush方法可在缓存区未满的情况下,将缓存内容写出到外部设备中
  74. out.flush();
  75. out.close();
  76. } catch (Exception e) {
  77. // TODO Auto-generated catch block
  78. e.printStackTrace();
  79. }
  80. }
  81. //删除文件方法
  82. public static void removeFile(Scanner in){
  83. System.out.println("请输入你要删除的文件名:");
  84. String filename = in.next();
  85. File f = new File("e://io/"+filename+".txt");
  86. if(f.exists()){
  87. //判断文件是否存在
  88. boolean b = f.delete();
  89. if(b){
  90. System.out.println("文件删除成功");
  91. }
  92. }else{
  93. System.out.println("请重新选择主菜单");
  94. }
  95. }
  96. //查看文件内容的方法
  97. public static void showFileContent(Scanner in){
  98. System.out.println("请输入文件名字:");
  99. String filename = in.next();
  100. try {
  101. BufferedInputStream bufferedInput = null;
  102. bufferedInput = new BufferedInputStream(new FileInputStream("e://io/"+filename+".txt"));
  103. int n;
  104. byte[] buffer = new byte[1024];
  105. String chunk = null;
  106. // read():读入一个字节
  107. // 从文件中按字节读取内容,到文件尾部时read方法将返回-1
  108. while ((n = bufferedInput.read(buffer)) != -1) {
  109. chunk = new String(buffer, 0, n);
  110. System.out.print(chunk);
  111. }
  112. bufferedInput.close();
  113. } catch (Exception e) {
  114. // TODO Auto-generated catch block
  115. e.printStackTrace();
  116. }
  117. }
  118. }

注:当然啦,只是实现了基本的功能,对于一些细节没有处理,比如输入的时候如果有字符怎么处理等情况。这里也只限制于在正常情况下的输入输出。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/71243.html

相关文章

  • 从设计者角度理解Java IO

    摘要:通过多个装饰类实现责任链模式,它将对一个输入流的不同处理分散到不同的中去。 1、基本概念 1.1、InputStream 最基本的字节输入流,抽象类,定义了读取原始字节的所有基本方法1.1.1、public abstract int read() throws IOException 读取一个字节的方法,最基础的方法1.1.2、public int read(byte b[], in...

    Flink_China 评论0 收藏0
  • 第十五章 输入输出系统

    摘要:在包下主要包括输入输出两种流,每种输入输出流又可分为字节流和字符流两大类。输入输出是从程序运行所在的内存的角度而言的。的输入流主要由和作为基类,而输出流主要由和作为基类。 本章主要参考和摘自疯狂java讲义上面的(java编程思想的后面看过后有新的内容再补充进去吧)。  输入输出是所有程序都必需的部分————使用输入机制允许程序读取外部数据(包括磁盘、光盘等存储设备上的数据和用户输入的...

    hankkin 评论0 收藏0
  • 高薪程序员&amp;面试题精讲系列22之说说JavaIO流,常用哪些IO流?

    摘要:一面试题及剖析今日面试题今天壹哥带各位复习一块可能会令初学者比较头疼的内容,起码当时让我很有些头疼的内容,那就是流。在这里壹哥会从两部分展开介绍流,即与流。除此之外尽量使用字节流。关闭此输入流并释放与流相关联的任何系统资源。 一. 面试题及剖析 1. 今日面试题 今天 壹哥 带各位复习一块可...

    fnngj 评论0 收藏0
  • JavaNIO

    摘要:也支持锁定部分内容,使用即可,其中为时,表明该锁是一个共享锁,可以允许多个县城读取文件,但阻止其他进程获得该文件的排他锁。当为时,表明是一个排他锁,它将锁住对该文件的读写。默认获取的是排他锁。 Java的NIO BufferedReader有一个特征,就是读取输入流中的数据时,如果没有读到有效数据,程序将在此处阻塞该线程的执行(使用InputStream的read方法从流中读取数据时,...

    mrcode 评论0 收藏0
  • java学习(九) —— javaFile文件操作及IO流概述

    摘要:字节流可以处理所有以为单位存储的文件,也就是说可以处理所有的文件,但是在处理字符的速度上不如字符流。文件字节输入流的读取时,是直接同字节流中读取的。原理就是在字节流的基础上增加了编解码的操作。 前言 流是干什么的:为了永久性的保存数据。 IO流用来处理设备之间的数据传输(上传和下载文件) java对数据的操作是通过流的方式。 java用于操作流的对象都在IO包中。 java IO系统...

    ralap 评论0 收藏0

发表评论

0条评论

chunquedong

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<