读写文件本来是非常基础的代码,但工作学习中难免会有遗忘,有时又难以翻看自己写过的代码,网上搜索更是五花八门让人头大,鉴于此,清泛网进行了深度的优化整理,本文综合汇总了各编程语言的文件读写demo代码,代码清晰简练直达重点,所有代码均已亲测,大家可以放心直接用于自己的项目。
文件的打开方式一般是通用的,常用的方式如下:(如无特例后续各语言不再作描述)"r" 打开只读文件,该文件必须存在。
"r+" 打开可读写的文件,该文件必须存在。
"w" 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
"w+" 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
"a" 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。
"a+" 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。
导航:
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();
}
}
}
原创文章,转载请注明: 转载自清泛网。