各编程语言读写文件汇总

清泛网

读写文件本来是非常基础的代码,但工作学习中难免会有遗忘,有时又难以翻看自己写过的代码,网上搜索更是五花八门让人头大,鉴于此,清泛网进行了深度的优化整理,本文综合汇总了各编程语言的文件读写demo代码,代码清晰简练直达重点,所有代码均已亲测,大家可以放心直接用于自己的项目。

文件的打开方式一般是通用的,常用的方式如下:(如无特例后续各语言不再作描述)

"r"    打开只读文件,该文件必须存在。
"r+"  打开可读写的文件,该文件必须存在。
"w"   打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
"w+" 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
"a"    以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。
"a+"  以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。


导航:

一、PHP

二、C#

三、C

       3.1、fgets、fputs文本读写

       3.2、fread、fwrite二进制读写

四、C++

五、Java


PHP读写文件:
// 写文件
$fp = fopen("log.txt", "a");
fwrite($fp, $str);
fclose($fp);

// 读文件
$fp = fopen("log.txt", "r");
while(!feof($fp)) {
	$line = fgets($fp);
	echo $line;
}
fclose($fp);

C#读写文件:
using System.IO;

private void ReadWriteFunc(string str)
{            
    // 写文件
    using (StreamWriter sw = new StreamWriter(@"test.txt"))
    {
        sw.WriteLine("file content...");

        sw.Flush();
        sw.Close();
    }

    // 读文件
    using (TextReader reader = new StreamReader("test.txt"))
    {
        while (reader.Peek() != -1)
        {
            string lineStr = reader.ReadLine();
            Console.WriteLine(lineStr);
        }
        reader.Close();
    }
}
注:读写时可指定编码,如TextReader reader = new StreamReader(file, Encoding.GetEncoding("GB2312"))

C读写文件:
第一种:fgets、fputs简单读写,一般用于处理文本文件。

int main(int argc, char* argv[])
{
	FILE *fp = NULL;
	/*打开文件*/
	if((fp = fopen("test.txt", "w+")) == NULL)
	{
		printf("文件打开出错,请检查文件是否存在!\n");
		return -1;
	}
	else
	{
		printf("文件已经打开。");
	}

	/*读文件*/
	char ch[64] = {0};
	printf("文件内容:\n");
	while(!feof(fp)) //判定文件是否结尾
	{
		if(fgets(ch, 64, fp) != NULL)
			printf("%s", ch);
	}

	/*写文件:写完一定要关闭文件*/
	fputs("write test", fp);

	/*关闭文件*/
	if(fclose(fp) != 0)
	{
		printf("文件关闭出错!\n");
		return -1;
	}
	else
	{
		printf("文件已关闭。\n");
	}

	return 0;
}
第二种:fread、fwrite块读写,一般用于处理二进制文件读写。
#include <string.h>

int main(int argc, char* argv[])
{
	// 获取文件的指针
	FILE *fp = fopen("test.txt", "r");
	// 把指针移动到文件的结尾,使用ftell获取文件长度
	fseek(fp, 0 ,SEEK_END);
	int len = ftell(fp);

	// 定义数组长度
	char *pBuf = new char[len + 1];
	// 把指针移动到文件开头,因为我们一开始把指针移动到了结尾
	rewind(fp);
	// 读文件
	fread(pBuf,		// 用于存储文件内容的buf首地址
			1,		// size:要读写的字节数(一次读几个字节)
			len,	// 要进行读写多少次size字节的数据项
			fp);	// 文件指针
	// buf最后一位:置结束符0
	pBuf[len] = 0;
	printf(pBuf);
	fclose(fp);


	// 获取文件指针
	fp = fopen("test.txt", "w");
	// 写文件
	const char* const strContent = "fwrite test";
	fwrite (strContent,		// 要输入的内容
		1,					// size:要读写的字节数
		strlen(strContent),	// 要进行读写多少次size字节的数据项
		fp);				// 文件指针
	// 数据刷新 数据立即更新
	fflush(fp);
	fclose(fp);

	return 0;
}

C++读写文件:
#include <iostream>
#include <fstream>
using namespace std;

static const int MAX_BUF_LEN = 256;

int _tmain(int argc, _TCHAR* argv[])
{
	// 写文件
	ofstream os("test.txt");
	if (os.is_open())   
	{
		os << "This is a line.\n";
		os << "This is another line.\n";
		os.close();
	}

	// 读文件
	char buffer[MAX_BUF_LEN];
	ifstream in("test.txt"); 
	if (! in.is_open())
	{ 
		cout << "Error opening file"; 
		exit (-1); 
	}
	while ( !in.eof() )
	{  
		in.getline(buffer, MAX_BUF_LEN);
		cout << buffer << endl;
	}

	return 0;
}

Java读写文件:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;

public class Test {
	public static void main(String argv[]) {
		File file = new File("test.txt");
		// 文件不存在创建文件
		try {
			file.createNewFile();
		} catch (IOException e) {
			e.printStackTrace();
		}

		// 向文件写入内容(输出流)
		String str = "java write file";
		try {
			FileOutputStream in = new FileOutputStream(file);
			try {
				in.write(str.getBytes(), 0, str.getBytes().length);
				in.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
		
		try {
			// 读取文件内容 (输入流)
			FileInputStream out = new FileInputStream(file);
			InputStreamReader isr = new InputStreamReader(out);
			int ch = 0;
			while ((ch = isr.read()) != -1) {
				System.out.print((char) ch);
			}
			isr.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}



原创文章,转载请注明: 转载自清泛网

读写文件 PHP

分享到:
评论加载中,请稍后...
创APP如搭积木 - 创意无限,梦想即时!
回到顶部