天天看點

檔案I/O操作(java和c++差別)

  • java的I/O操作

關聯檔案用檔案操作類:File

   File常用方法:

檔案I/O操作(java和c++差別)

對檔案内容進行讀寫操作:位元組操作流 or 字元操作流

檔案I/O操作(java和c++差別)

位元組操作流

檔案I/O操作(java和c++差別)

字元操作流

舉個例子:

package edu.thu.keyword.test;  
      
    import java.io.File;  
    import java.io.InputStreamReader;  
    import java.io.BufferedReader;  
    import java.io.BufferedWriter;  
    import java.io.FileInputStream;  
    import java.io.FileWriter;  
      
    public class cin_txt {  
        static void main(String args[]) {  
            try { // 防止檔案建立或讀取失敗,用catch捕捉錯誤并列印,也可以throw  
      
                /* 讀入TXT檔案 */  
                String pathname = "D:\\twitter\\13_9_6\\dataset\\en\\input.txt"; // 絕對路徑或相對路徑都可以,這裡是絕對路徑,寫入檔案時示範相對路徑  
                File filename = new File(pathname); // 要讀取以上路徑的input。txt檔案  
                InputStreamReader reader = new InputStreamReader(  
                        new FileInputStream(filename)); // 建立一個輸入流對象reader  
                BufferedReader br = new BufferedReader(reader); // 建立一個對象,它把檔案内容轉成計算機能讀懂的語言  
                String line = "";  
                line = br.readLine();  
                while (line != null) {  
                    line = br.readLine(); // 一次讀入一行資料  
                }  
      
                /* 寫入Txt檔案 */  
                File writename = new File(".\\result\\en\\output.txt"); // 相對路徑,如果沒有則要建立一個新的output。txt檔案  
                writename.createNewFile(); // 建立新檔案  
                BufferedWriter out = new BufferedWriter(new FileWriter(writename));  
                out.write("我會寫入檔案啦\r\n"); // \r\n即為換行  
                out.flush(); // 把緩存區内容壓入檔案  
                out.close(); // 最後記得關閉檔案  
      
            } catch (Exception e) {  
                e.printStackTrace();  
            }  
        }  
    }  
           
  • C++的I/O操作

關聯檔案使用:open()函數

   包含頭檔案:

#include<stdio.h>
           

格式:FILE * fopen(const char * path,const char * mode)

參數: path:需要打開的檔案路徑

mode:檔案打開方式

對檔案内容進行讀寫操作:fread()函數和fwrite()函數

// 讀取檔案塊資料

size_t fread(void *buffer, size_t size, size_t count, FILE *file);

// 寫入檔案塊資料

size_t fwrite(const void *buffer, size_t size, size_t count, FILE *file);
           

fread參數說明:buffer是讀取資料後存放位址,size是的塊長度,count是塊的數量,實際讀取長度為size*count,傳回值為塊成功讀取塊的count數量。

fwrite參數說明:buffer是寫入資料後存放位址,size是的塊長度,count是塊的數量,實際讀取長度為size*count,傳回值為塊成功寫入快的count數量。

 舉個例子:

#include <stdio.h>  
using namespace std;
int main()  
{  
    int num;  
    char name[5];  
    FILE *fp;  
    if ((fp = fopen("d://a.txt", "w")) == NULL)  
        printf("cannot open file!\n");  
   scanf("%d %s",&num,name);  
   fprintf(fp, "%d %s", num, name);  
   fclose(fp);  
   if ((fp = fopen("d://b.txt", "w")) == NULL)  
        printf("cannot open file!\n");  
   fwrite(&num, sizeof(int), 2, fp);  
   fwrite(name, sizeof(char), 5, fp);  
   fclose(fp);   
} 
           

 PS:C++還有一種檔案操作方法:(ofstream,ifstream,fstream) ,放參考文獻了

相關文獻:

1.

https://blog.csdn.net/l740450789/article/details/49005325?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase

2.

https://blog.csdn.net/kingstar158/article/details/6859379?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-9.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-9.nonecase