标签: fwrite

如何用php更新ini文件?

我有一个我创建的现有ini文件,我想知道是否有更新文件部分的方法,或者每次都必须重写整个文件?

这是我的config.ini文件的示例:

[config]
    title='test'
    status=0
[positions]
    top=true
    sidebar=true
    content=true
    footer=false
Run Code Online (Sandbox Code Playgroud)

说我想改变[positions] top=false.所以我会使用parse_ini_file获取所有信息,然后进行更改并使用fwrite重写整个文件.或者有没有办法改变那个部分?

php file fwrite

5
推荐指数
1
解决办法
8521
查看次数

如何允许PHP在不影响服务器安全性的情况下写入文件

每当我想让PHP脚本将输出写入服务器上的文件时,我经常会遇到负面评论.

我用的fopen(),fwrite()fclose()功能.

我知道如何实现这一目标的唯一方法是将输出文件的权限设置为0666,或者让它由"nobody"拥有(这是PHP在我们的Apache Web服务器上运行的用户).

因此,如果"0666"或"无人拥有"是安全风险,那么如何成功安全地允许PHP脚本写入文件?

感谢您就此主题分享指导.

php apache permissions fwrite file-ownership

5
推荐指数
1
解决办法
2056
查看次数

PHP fwrite()如何在某些特定行之后插入新行

我是新来的.
无论如何,我对fwrite()进行了研究,但是我找不到解决方案,所以我正在寻求帮助.我想要的是在一些其他特定的行之后添加一行新的文本.我有一个.txt文件,其中有:

//Users

//Other stuff

//Other stuff2  
Run Code Online (Sandbox Code Playgroud)

现在我想做的是能够在//用户下面添加一个新用户而不用触及"其他东西"和"其他东西2".所以看起来应该是这样的:

//Users    
Aneszej  
Test321  
Test123

//Other stuff

//Other stuff2  
Run Code Online (Sandbox Code Playgroud)

到目前为止我所拥有的:

$config = 'test.txt';
$file=fopen($config,"r+") or exit("Unable to open file!");

$date = date("F j, Y");
$time = date("H:i:s");

$username = "user";
$password = "pass";
$email = "email";
$newuser = $username . " " . $password . " " . $email . " " . $date . " " . $time;

while (!feof($file)) {
    $line=fgets($file);
    if (strpos($line, '//Users')!==false) {
        $newline = PHP_EOL . $newuser;
    } …
Run Code Online (Sandbox Code Playgroud)

php newline fwrite strpos

5
推荐指数
1
解决办法
2万
查看次数

编写和读取无符号字符到二进制文件

我正在编写一个简单的程序,写入二进制文件,关闭它,然后读取刚刚写入的数据.我正在尝试编写一个无符号字符数组.我在阅读数据时遇到了一些问题.我不确定我是在写不正确的数据还是读错了.当我读取数据时,我得到的输出为:5 bytes对于读取的字节数,但我得到的输出与我写入文件的值不同.

FILE *binFile = fopen("sample","wb");

unsigned char data[5]={5,10,15,20,25};
fwrite(data,sizeof(unsigned char),sizeof(data),binFile);
fclose(binFile);

unsigned char data2[5];
binFile = fopen("sample","rb");
int s = fread(data2,1,sizeof(data),binFile);
fclose(binFile);
cout<<s<<" bytes\n";
for(int i=0; i<5;i++)
        cout<<data2[i]<<" ";
cout<<"\n";
Run Code Online (Sandbox Code Playgroud)

c c++ file-io fwrite fread

5
推荐指数
1
解决办法
5937
查看次数

fwrite()超过2 GiB?

我有一组我要连接的文件(每个文件代表多部分下载的一部分).

每个拆分文件大小约为250MiB,我有可变数量.

我的连接逻辑是直截了当的:

if (is_resource($handle = fopen($output, 'xb')) === true)
{
    foreach ($parts as $part)
    {
        if (is_resource($part = fopen($part, 'rb')) === true)
        {
            while (feof($part) !== true)
            {
                fwrite($handle, fread($part, 4096));
            }

            fclose($part);
        }
    }

    fclose($handle);
}
Run Code Online (Sandbox Code Playgroud)

我花了一段时间来追踪它,但显然,每当我有超过8个单独的部分(总共2GiB)时,我的输出文件被截断为2147483647字节(报告者sprintf('%u', $output)).

我想这是由于某种32位内部计数器的所使用fopen()fwrite().

我该如何解决这个问题(最好只使用PHP)?

php file-io fopen 32-bit fwrite

5
推荐指数
1
解决办法
431
查看次数

CSV会根据内容调整列大小

我想知道是否可以根据列中包含的内容设置列的大小.我希望当你打开CSV一旦它直接生成列是正确的大小.

要写入CSV,我有以下代码:

$csvFile = fopen(CSV_FILE, $writeMode);
            $searchStr = array(";");
            $replaceStr = array(",");
            foreach ($csvArray as $csvArrayRow) {
                fwrite($csvFile, iconv("UTF-8", "Windows-1252",str_replace($searchStr, $replaceStr, html_entity_decode($csvArrayRow["title"], ENT_HTML401 | ENT_QUOTES, "UTF-8")).";"));
                fwrite($csvFile, iconv("UTF-8", "Windows-1252",str_replace($searchStr, $replaceStr, html_entity_decode($csvArrayRow["author"], ENT_HTML401 | ENT_QUOTES, "UTF-8")).";"));
                fwrite($csvFile, $csvArrayRow["date"].";"."\n");
            }
            fclose($csvFile);

            echo json_encode(array(count($csvArray)));

            exit;
Run Code Online (Sandbox Code Playgroud)

可以添加一些东西来调整列的大小,还是在其他地方呢?

php csv fwrite export-to-csv

5
推荐指数
1
解决办法
1301
查看次数

C ++文本文件不会保存为Unicode,而是一直保存为ANSI

因此,基本上,我需要能够以Unicode创建文本文件,但是我所做的任何事情都会保存在ANSI中。

这是我的代码:

    wchar_t name[] = L"???????????";
    FILE * pFile;
    pFile = fopen("chineseLetters.txt", "w");

    fwrite(name, sizeof(wchar_t), sizeof(name), pFile);
    fclose(pFile);
Run Code Online (Sandbox Code Playgroud)

这是我的“ chineseLetters.txt”的输出:

     -NWòTx[øfû–P[SŠƒR  õ2123
Run Code Online (Sandbox Code Playgroud)

此外,该应用程序位于MBCS中,不能更改为Unicode,因为它需要同时使用Unicode和ANSI。

非常感谢您的帮助。谢谢。

感谢您的所有快速回复!有用!

只需添加L“ \ uFFFE ???????????” 仍然没有用,文本编辑器仍然将其识别为CP1252,所以我做了2次fwrite而不是一次,一个是BOM,另一个是字符,这是我的代码:

    wchar_t name[] = L"???????????";
    unsigned char bom[] = { 0xFF, 0xFE };
    FILE * pFile;
    pFile = fopen("chineseLetters.txt", "w");
    fwrite(bom, sizeof(unsigned char), sizeof(bom), pFile);
    fwrite(name, sizeof(wchar_t), wcslen(name), pFile);
    fclose(pFile);
Run Code Online (Sandbox Code Playgroud)

c++ unicode text file fwrite

5
推荐指数
1
解决办法
5583
查看次数

在寻求结束后,fwrite写入文件的末尾

我有一组列表项目,我读到结构.此代码应替换现有项目.用户输入位置(1..n)并应替换相应的记录.但它不起作用,记录放到文件的末尾.怎么了?

int pos;
FILE* file = fopen("file.txt", "ab+");
scanf("%d", &pos);
Schedule sch = getScheduleRecord();
fseek(file, sizeof(Schedule) * (pos - 1), SEEK_SET);
fwrite(&sch, sizeof(sch), 1, file);
fclose(file);
break;
Run Code Online (Sandbox Code Playgroud)

c fseek fwrite

5
推荐指数
1
解决办法
2432
查看次数

使用fwrite r打印时禁用指数表示法

我遇到了一个问题,即使我禁用指数表示法,也会以指数表示法fwrite打印数字.一个例子:

library(data.table)
options(scipen = 999)
testint = c(500000)
Run Code Online (Sandbox Code Playgroud)

在我打印之前,r表现和不以指数表示法打印:

print(testint)
[1] 500000
print(list(testint)
[[1]]
[1] 500000
Run Code Online (Sandbox Code Playgroud)

但当我这样做时:

fwrite(list(testint), "output")
Run Code Online (Sandbox Code Playgroud)

该文件的内容是5e + 05.我怀疑这个问题可能特别适用fwrite,就像我一样:

write(testint, "output1")
Run Code Online (Sandbox Code Playgroud)

输出文件的内容为500000.

有没有办法阻止fwrite这样做?我可以切换到使用write,但它们之间存在巨大的速度差异,而且我正在编写大量数据,因此如果可能的话,我会想要避免显着的性能影响.谢谢!

编辑:如果有人有兴趣,有一个现有的开放GitHub的问题在这里,我发现后,我问的问题!

r fwrite data.table

5
推荐指数
1
解决办法
372
查看次数

处理字符串的最快方法

我有一个文本文件来阅读和处理20000行.在文本文件中,我想读取点坐标并分配给DirectX进行渲染.文本文件的快照

我使用std :: ifstream,getline,stringstream来获取点坐标.在构建win32程序然后开始运行之后,读取并存储数组中的点坐标需要很长时间.(5分钟通过20000行文本文件).代码如下:

struct PointCoord { std::string PtName; float PtX = 0.0; float PtY = 0.0;}
PointCoord *PointPtr = NULL;
PointCoord pointcoord;

std::ifstream File_read(FileNameTXT);    
while (getline(File_read, TextHandler))
        {
            std::istringstream iss;
            std::string skip;
            if (TextHandler.find("  POINT ") != std::string::npos)
            {
                iss.str(TextHandler);
                std::string TempX, TempY;
                iss >> skip;
                iss >> pointcoord.PtName;                         

                //pointcoord pass value to PointCoord
                iss >> TempX;
                iss >> TempY;

                pointcoord.PtX = std::stof(TempX.c_str());
                pointcoord.PtY = std::stof(TempY.c_str());

                //dynamically store the points coordiantes
                if (PointPtr == NULL)
                {
                    PointPtr = …
Run Code Online (Sandbox Code Playgroud)

c++ fwrite fread

5
推荐指数
1
解决办法
175
查看次数

标签 统计

fwrite ×10

php ×5

c++ ×3

c ×2

file ×2

file-io ×2

fread ×2

32-bit ×1

apache ×1

csv ×1

data.table ×1

export-to-csv ×1

file-ownership ×1

fopen ×1

fseek ×1

newline ×1

permissions ×1

r ×1

strpos ×1

text ×1

unicode ×1