文件读取的方式 流的几种方式

2024-09-04 12:48
文章标签 读取 方式 几种

本文主要是介绍文件读取的方式 流的几种方式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、按字节读取文件内容
2、按字符读取文件内容
3、按行读取文件内容

4、随机读取文件内容 



public   class  ReadFromFile {
    
/**
     * 以字节为单位读取文件,常用于读二进制文件,如图片、声音、影像等文件。
     
*/
    
public   static   void  readFileByBytes(String fileName) {
        File file 
=   new  File(fileName);
        InputStream in 
=   null ;
        
try  {
            System.out.println(
" 以字节为单位读取文件内容,一次读一个字节: " );
            
//  一次读一个字节
            in  =   new  FileInputStream(file);
            
int  tempbyte;
            
while  ((tempbyte  =  in.read())  !=   - 1 ) {
                System.out.write(tempbyte);
            }
            in.close();
        } 
catch  (IOException e) {
            e.printStackTrace();
            
return ;
        }
        
try  {
            System.out.println(
" 以字节为单位读取文件内容,一次读多个字节: " );
            
//  一次读多个字节
             byte [] tempbytes  =   new   byte [ 100 ];
            
int  byteread  =   0 ;
            in 
=   new  FileInputStream(fileName);
            ReadFromFile.showAvailableBytes(in);
            
//  读入多个字节到字节数组中,byteread为一次读入的字节数
             while  ((byteread  =  in.read(tempbytes))  !=   - 1 ) {
                System.out.write(tempbytes, 
0 , byteread);
            }
        } 
catch  (Exception e1) {
            e1.printStackTrace();
        } 
finally  {
            
if  (in  !=   null ) {
                
try  {
                    in.close();
                } 
catch  (IOException e1) {
                }
            }
        }
    }

    
/**
     * 以字符为单位读取文件,常用于读文本,数字等类型的文件
     
*/
    
public   static   void  readFileByChars(String fileName) {
        File file 
=   new  File(fileName);
        Reader reader 
=   null ;
        
try  {
            System.out.println(
" 以字符为单位读取文件内容,一次读一个字节: " );
            
//  一次读一个字符
            reader  =   new  InputStreamReader( new  FileInputStream(file));
            
int  tempchar;
            
while  ((tempchar  =  reader.read())  !=   - 1 ) {
                
//  对于windows下,\r\n这两个字符在一起时,表示一个换行。
                
//  但如果这两个字符分开显示时,会换两次行。
                
//  因此,屏蔽掉\r,或者屏蔽\n。否则,将会多出很多空行。
                 if  ((( char ) tempchar)  !=   ' \r ' ) {
                    System.out.print((
char ) tempchar);
                }
            }
            reader.close();
        } 
catch  (Exception e) {
            e.printStackTrace();
        }
        
try  {
            System.out.println(
" 以字符为单位读取文件内容,一次读多个字节: " );
            
//  一次读多个字符
             char [] tempchars  =   new   char [ 30 ];
            
int  charread  =   0 ;
            reader 
=   new  InputStreamReader( new  FileInputStream(fileName));
            
//  读入多个字符到字符数组中,charread为一次读取字符数
             while  ((charread  =  reader.read(tempchars))  !=   - 1 ) {
                
//  同样屏蔽掉\r不显示
                 if  ((charread  ==  tempchars.length)
                        
&&  (tempchars[tempchars.length  -   1 !=   ' \r ' )) {
                    System.out.print(tempchars);
                } 
else  {
                    
for  ( int  i  =   0 ; i  <  charread; i ++ ) {
                        
if  (tempchars[i]  ==   ' \r ' ) {
                            
continue ;
                        } 
else  {
                            System.out.print(tempchars[i]);
                        }
                    }
                }
            }

        } 
catch  (Exception e1) {
            e1.printStackTrace();
        } 
finally  {
            
if  (reader  !=   null ) {
                
try  {
                    reader.close();
                } 
catch  (IOException e1) {
                }
            }
        }
    }

    
/**
     * 以行为单位读取文件,常用于读面向行的格式化文件
     
*/
    
public   static   void  readFileByLines(String fileName) {
        File file 
=   new  File(fileName);
        BufferedReader reader 
=   null ;
        
try  {
            System.out.println(
" 以行为单位读取文件内容,一次读一整行: " );
            reader 
=   new  BufferedReader( new  FileReader(file));
            String tempString 
=   null ;
            
int  line  =   1 ;
            
//  一次读入一行,直到读入null为文件结束
             while  ((tempString  =  reader.readLine())  !=   null ) {
                
//  显示行号
                System.out.println( " line  "   +  line  +   " "   +  tempString);
                line
++ ;
            }
            reader.close();
        } 
catch  (IOException e) {
            e.printStackTrace();
        } 
finally  {
            
if  (reader  !=   null ) {
                
try  {
                    reader.close();
                } 
catch  (IOException e1) {
                }
            }
        }
    }

    
/**
     * 随机读取文件内容
     
*/
    
public   static   void  readFileByRandomAccess(String fileName) {
        RandomAccessFile randomFile 
=   null ;
        
try  {
            System.out.println(
" 随机读取一段文件内容: " );
            
//  打开一个随机访问文件流,按只读方式
            randomFile  =   new  RandomAccessFile(fileName,  " r " );
            
//  文件长度,字节数
             long  fileLength  =  randomFile.length();
            
//  读文件的起始位置
             int  beginIndex  =  (fileLength  >   4 ?   4  :  0 ;
            
//  将读文件的开始位置移到beginIndex位置。
            randomFile.seek(beginIndex);
            
byte [] bytes  =   new   byte [ 10 ];
            
int  byteread  =   0 ;
            
//  一次读10个字节,如果文件内容不足10个字节,则读剩下的字节。
            
//  将一次读取的字节数赋给byteread
             while  ((byteread  =  randomFile.read(bytes))  !=   - 1 ) {
                System.out.write(bytes, 
0 , byteread);
            }
        } 
catch  (IOException e) {
            e.printStackTrace();
        } 
finally  {
            
if  (randomFile  !=   null ) {
                
try  {
                    randomFile.close();
                } 
catch  (IOException e1) {
                }
            }
        }
    }

    
/**
     * 显示输入流中还剩的字节数
     
*/
    
private   static   void  showAvailableBytes(InputStream in) {
        
try  {
            System.out.println(
" 当前字节输入流中的字节数为: "   +  in.available());
        } 
catch  (IOException e) {
            e.printStackTrace();
        }
    }

    
public   static   void  main(String[] args) {
        String fileName 
=   " C:/temp/newTemp.txt " ;
        ReadFromFile.readFileByBytes(fileName);
        ReadFromFile.readFileByChars(fileName);
        ReadFromFile.readFileByLines(fileName);
        ReadFromFile.readFileByRandomAccess(fileName);
    }
}
复制代码

5、将内容追加到文件尾部

复制代码
public   class  AppendToFile {
    
/**
     * A方法追加文件:使用RandomAccessFile
     
*/
    
public   static   void  appendMethodA(String fileName, String content) {
        
try  {
            
//  打开一个随机访问文件流,按读写方式
            RandomAccessFile randomFile  =   new  RandomAccessFile(fileName,  " rw " );
            
//  文件长度,字节数
             long  fileLength  =  randomFile.length();
            
// 将写文件指针移到文件尾。
            randomFile.seek(fileLength);
            randomFile.writeBytes(content);
            randomFile.close();
        } 
catch  (IOException e) {
            e.printStackTrace();
        }
    }

    
/**
     * B方法追加文件:使用FileWriter
     
*/
    
public   static   void  appendMethodB(String fileName, String content) {
        
try  {
            
// 打开一个写文件器,构造函数中的第二个参数true表示以追加形式写文件
            FileWriter writer  =   new  FileWriter(fileName,  true );
            writer.write(content);
            writer.close();
        } 
catch  (IOException e) {
            e.printStackTrace();
        }
    }

    
public   static   void  main(String[] args) {
        String fileName 
=   " C:/temp/newTemp.txt " ;
        String content 
=   " new append! " ;
        
// 按方法A追加文件
        AppendToFile.appendMethodA(fileName, content);
        AppendToFile.appendMethodA(fileName, 
" append end. \n " );
        
// 显示文件内容
        ReadFromFile.readFileByLines(fileName);
        
// 按方法B追加文件
        AppendToFile.appendMethodB(fileName, content);
        AppendToFile.appendMethodB(fileName, 
" append end. \n " );
        
// 显示文件内容
        ReadFromFile.readFileByLines(fileName);
    }
}

这篇关于文件读取的方式 流的几种方式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1136070

相关文章

MybatisPlus中几种条件构造器运用方式

《MybatisPlus中几种条件构造器运用方式》QueryWrapper是Mybatis-Plus提供的一个用于构建SQL查询条件的工具类,提供了各种方法如eq、ne、gt、ge、lt、le、lik... 目录版本介绍QueryWrapperLambdaQueryWrapperUpdateWrapperL

检查 Nginx 是否启动的几种方法

《检查Nginx是否启动的几种方法》本文主要介绍了检查Nginx是否启动的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1. 使用 systemctl 命令(推荐)2. 使用 service 命令3. 检查进程是否存在4

idea设置快捷键风格方式

《idea设置快捷键风格方式》在IntelliJIDEA中设置快捷键风格,打开IDEA,进入设置页面,选择Keymap,从Keymaps下拉列表中选择或复制想要的快捷键风格,点击Apply和OK即可使... 目录idea设www.chinasem.cn置快捷键风格按照以下步骤进行总结idea设置快捷键pyth

Linux镜像文件制作方式

《Linux镜像文件制作方式》本文介绍了Linux镜像文件制作的过程,包括确定磁盘空间布局、制作空白镜像文件、分区与格式化、复制引导分区和其他分区... 目录1.确定磁盘空间布局2.制作空白镜像文件3.分区与格式化1) 分区2) 格式化4.复制引导分区5.复制其它分区1) 挂载2) 复制bootfs分区3)

详解C++ 存储二进制数据容器的几种方法

《详解C++存储二进制数据容器的几种方法》本文主要介绍了详解C++存储二进制数据容器,包括std::vector、std::array、std::string、std::bitset和std::ve... 目录1.std::vector<uint8_t>(最常用)特点:适用场景:示例:2.std::arra

SpringBoot返回文件让前端下载的几种方式

《SpringBoot返回文件让前端下载的几种方式》文章介绍了开发中文件下载的两种常见解决方案,并详细描述了通过后端进行下载的原理和步骤,包括一次性读取到内存和分块写入响应输出流两种方法,此外,还提供... 目录01 背景02 一次性读取到内存,通过响应输出流输出到前端02 将文件流通过循环写入到响应输出流

java敏感词过滤的实现方式

《java敏感词过滤的实现方式》文章描述了如何搭建敏感词过滤系统来防御用户生成内容中的违规、广告或恶意言论,包括引入依赖、定义敏感词类、非敏感词类、替换词类和工具类等步骤,并指出资源文件应放在src/... 目录1.引入依赖2.定义自定义敏感词类3.定义自定义非敏感类4.定义自定义替换词类5.最后定义工具类

C++打印 vector的几种方法小结

《C++打印vector的几种方法小结》本文介绍了C++中遍历vector的几种方法,包括使用迭代器、auto关键字、typedef、计数器以及C++11引入的范围基础循环,具有一定的参考价值,感兴... 目录1. 使用迭代器2. 使用 auto (C++11) / typedef / type alias

python项目环境切换的几种实现方式

《python项目环境切换的几种实现方式》本文主要介绍了python项目环境切换的几种实现方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 如何在不同python项目中,安装不同的依赖2. 如何切换到不同项目的工作空间3.创建项目

SpringBoot的内嵌和外置tomcat的实现方式

《SpringBoot的内嵌和外置tomcat的实现方式》本文主要介绍了在SpringBoot中定制和修改Servlet容器的配置,包括内嵌式和外置式Servlet容器的配置方法,文中通过示例代码介绍... 目录1.内嵌如何定制和修改Servlet容器的相关配置注册Servlet三大组件Servlet注册详