<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 9, 文章 - 1, 評論 - 2, 引用 - 0
    數(shù)據(jù)加載中……

    java中多種方式讀文件

    一、多種方式讀文件內(nèi)容。
    1、按字節(jié)讀取文件內(nèi)容
    2、按字符讀取文件內(nèi)容
    3、按行讀取文件內(nèi)容
    4、隨機讀取文件內(nèi)容
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.RandomAccessFile;
    import java.io.Reader; 
    public class ReadFromFile {
    /**
    * 以字節(jié)為單位讀取文件,常用于讀二進制文件,如圖片、聲音、影像等文件。
    @param fileName 文件的名
    */

    public static void readFileByBytes(String fileName){
    File file 
    = new File(fileName);
    InputStream in 
    = null;
    try {
    System.out.println(
    "以字節(jié)為單位讀取文件內(nèi)容,一次讀一個字節(jié):");
    // 一次讀一個字節(jié)
    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(
    "以字節(jié)為單位讀取文件內(nèi)容,一次讀多個字節(jié):");
    //一次讀多個字節(jié)
    byte[] tempbytes = new byte[100];
    int byteread = 0;
    in 
    = new FileInputStream(fileName);
    ReadFromFile.showAvailableBytes(in);
    //讀入多個字節(jié)到字節(jié)數(shù)組中,byteread為一次讀入的字節(jié)數(shù)
    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) {
    }

    }

    }

    }

    /**
    * 以字符為單位讀取文件,常用于讀文本,數(shù)字等類型的文件
    @param fileName 文件名
    */

    public static void readFileByChars(String fileName){
    File file 
    = new File(fileName);
    Reader reader 
    = null;
    try {
    System.out.println(
    "以字符為單位讀取文件內(nèi)容,一次讀一個字節(jié):");
    // 一次讀一個字符
    reader = new InputStreamReader(new FileInputStream(file));
    int tempchar;
    while ((tempchar = reader.read()) != -1){
    //對于windows下,rn這兩個字符在一起時,表示一個換行。
    //但如果這兩個字符分開顯示時,會換兩次行。
    //因此,屏蔽掉r,或者屏蔽n。否則,將會多出很多空行。
    if (((char)tempchar) != 'r'){
    System.out.print((
    char)tempchar);
    }

    }

    reader.close();
    }
     catch (Exception e) {
    e.printStackTrace();
    }

    try {
    System.out.println(
    "以字符為單位讀取文件內(nèi)容,一次讀多個字節(jié):");
    //一次讀多個字符
    char[] tempchars = new char[30];
    int charread = 0;
    reader 
    = new InputStreamReader(new FileInputStream(fileName));
    //讀入多個字符到字符數(shù)組中,charread為一次讀取字符數(shù)
    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) {
    }

    }

    }

    }

    /**
    * 以行為單位讀取文件,常用于讀面向行的格式化文件
    @param fileName 文件名
    */

    public static void readFileByLines(String fileName){
    File file 
    = new File(fileName);
    BufferedReader reader 
    = null;
    try {
    System.out.println(
    "以行為單位讀取文件內(nèi)容,一次讀一整行:");
    reader 
    = new BufferedReader(new FileReader(file));
    String tempString 
    = null;
    int line = 1;
    //一次讀入一行,直到讀入null為文件結(jié)束
    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) {
    }

    }

    }

    }

    /**
    * 隨機讀取文件內(nèi)容
    @param fileName 文件名
    */

    public static void readFileByRandomAccess(String fileName){
    RandomAccessFile randomFile 
    = null;
    try {
    System.out.println(
    "隨機讀取一段文件內(nèi)容:");
    // 打開一個隨機訪問文件流,按只讀方式
    randomFile = new RandomAccessFile(fileName, "r");
    // 文件長度,字節(jié)數(shù)
    long fileLength = randomFile.length();
    // 讀文件的起始位置
    int beginIndex = (fileLength > 4? 4 : 0;
    //將讀文件的開始位置移到beginIndex位置。
    randomFile.seek(beginIndex);
    byte[] bytes = new byte[10];
    int byteread = 0;
    //一次讀10個字節(jié),如果文件內(nèi)容不足10個字節(jié),則讀剩下的字節(jié)。
    //將一次讀取的字節(jié)數(shù)賦給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) {
    }

    }

    }

    }

    /**
    * 顯示輸入流中還剩的字節(jié)數(shù)
    @param in
    */

    private static void showAvailableBytes(InputStream in){
    try {
    System.out.println(
    "當(dāng)前字節(jié)輸入流中的字節(jié)數(shù)為:" + 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);
    }

    }


    二、將內(nèi)容追加到文件尾部

    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.RandomAccessFile;

    /**
    * 將內(nèi)容追加到文件尾部
    */

    public class AppendToFile {

    /**
    * A方法追加文件:使用RandomAccessFile
    @param fileName 文件名
    @param content 追加的內(nèi)容
    */

    public static void appendMethodA(String fileName, String content){
    try {
    // 打開一個隨機訪問文件流,按讀寫方式
    RandomAccessFile randomFile = new RandomAccessFile(fileName, "rw");
    // 文件長度,字節(jié)數(shù)
    long fileLength = randomFile.length();
    //將寫文件指針移到文件尾。
    randomFile.seek(fileLength);
    randomFile.writeBytes(content);
    randomFile.close();
    }
     catch (IOException e){
    e.printStackTrace();
    }

    }

    /**
    * B方法追加文件:使用FileWriter
    @param fileName
    @param content
    */

    public static void appendMethodB(String fileName, String content){
    try {
    //打開一個寫文件器,構(gòu)造函數(shù)中的第二個參數(shù)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");
    //顯示文件內(nèi)容
    ReadFromFile.readFileByLines(fileName);
    //按方法B追加文件
    AppendToFile.appendMethodB(fileName, content);
    AppendToFile.appendMethodB(fileName, 
    "append end. n");
    //顯示文件內(nèi)容
    ReadFromFile.readFileByLines(fileName);
    }

    }

     


    讀取一個文件的全部內(nèi)容:
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.RandomAccessFile;
    public class TestFile{    

    public static String getFileString(String filename)
    {
      FileInputStream fileinputstream
    =null
      String temp
    ="";  //文件內(nèi)容
      try{
      
       fileinputstream 
    = new FileInputStream(filename);//讀取模塊文件
       int lenght = fileinputstream.available();
       System.out.println(lenght);
       
    byte bytes[] = new byte[lenght];
       fileinputstream.read(bytes);
       temp 
    = new String(bytes);   
       System.out.println(temp);
       System.out.println(
    "+++++++++++++++++++++++++++++++++++++++++++++++++++");
      }
    catch(Exception e){
          e.printStackTrace();
      }
    finally{
       
    try{
        
    if(fileinputstream!=null){
         fileinputstream.close();
        }

       }
    catch(Exception e){
        e.printStackTrace();
       }

      }

      
    return temp;
    }


     
    public static void main(String [] args){
            
            String path
    ="C:/DCN-DAQ-SW-C3550-1[2007-08-08 14-01-42].log";
            TestFile testFile
    =new TestFile();
            testFile.getFileString(path);
            
        }

    }

    posted on 2007-08-08 17:45 趙貴陽 閱讀(593) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲熟女综合色一区二区三区| 国产成人无码综合亚洲日韩| 亚洲成a人片在线观看国产| 狠狠色婷婷狠狠狠亚洲综合 | 国产亚洲成av片在线观看| 日韩亚洲人成在线综合日本| 久久亚洲精品成人AV| 亚洲成a人片在线观看精品| 亚洲JLZZJLZZ少妇| 黄色网页在线免费观看| 久久国产乱子伦精品免费看| 国产一卡2卡3卡4卡2021免费观看| 日本免费一本天堂在线| 国产亚洲日韩在线三区| 老司机亚洲精品影院无码| 亚洲熟妇无码AV| 亚欧洲精品在线视频免费观看 | 日本三级2019在线观看免费| 啦啦啦手机完整免费高清观看 | 亚洲一区二区三区无码影院| 老汉色老汉首页a亚洲| 亚洲人AV在线无码影院观看| 男女一边摸一边做爽的免费视频| 永久在线免费观看| 国产免费黄色大片| 亚洲国产精品自在在线观看 | 在线人成免费视频69国产| 永久免费av无码网站韩国毛片 | 免费国产成人高清视频网站| 亚洲成A人片在线观看无码不卡| 亚洲国产模特在线播放| 午夜免费国产体验区免费的| 91人人区免费区人人| 国产大片91精品免费观看男同| 亚洲高清在线播放| 自拍偷自拍亚洲精品播放| 无码成A毛片免费| 免费a级毛片在线观看| 亚洲综合激情另类小说区| 男人j进女人p免费视频| 很黄很色很刺激的视频免费|