标签: large-file-support

O_LARGEFILE只需要写一个大文件吗?

O_LARGEFILE如果我想要做的就是写一个大文件(O_WRONLY)或附加到一个大文件(O_APPEND | O_WRONLY),那么标志是否需要?

从我在CLucene-dev邮件列表上读到的标题为" 无法写入> 2gb 索引文件 "的帖子中,似乎O_LARGEFILE可能需要编写大文件,但该讨论中的参与者正在使用O_RDWR,不是O_WRONLY,所以我不确定.

c file-descriptor large-file-support large-files posix-api

10
推荐指数
2
解决办法
9815
查看次数

在C + MinGW32中使用64位地址执行文件操作

我试图在C中读取24 GB的XML文件,但它不起作用.当我读到它时,我正在使用ftell()打印出当前位置,但是一旦它达到足够大的数字,它就会回到一个小数字并重新开始,甚至从未获得20%的文件.我认为这是用于存储位置(长)的变量范围的问题,根据http://msdn.microsoft.com/en-us/library/s3f49ktz(VS),它可以达到大约4,000,000,000..80).aspx,而我的文件大小为25,000,000,000字节.一个很长的长期应该工作,但我怎么能改变我的编译器(Cygwin/mingw32)使用或得到它有fopen64?

cygwin mingw large-file-support

9
推荐指数
1
解决办法
1398
查看次数

如何在Darwin下启用大文件支持?

我有一个C应用程序,我正在尝试为Mac OS X 10.6.4编译:

$ uname -v
Darwin Kernel Version 10.4.0: Fri Apr 23 18:28:53 PDT 2010; root:xnu-1504.7.4~1/RELEASE_I386
Run Code Online (Sandbox Code Playgroud)

我的gcc情况如下:

$ gcc --version
i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5664)
Run Code Online (Sandbox Code Playgroud)

我的Makefile情况如下:

CC=gcc
CFLAGS=-D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -O3 -Wformat -Wall -pedantic -std=gnu99

all: myApp
    rm -rf *~

myApp: myApp.o
    ${CC} ${CFLAGS} myApp.o -lbz2 -o myApp
    rm -rf *~

clean:
    rm -rf *.o myApp
Run Code Online (Sandbox Code Playgroud)

问题是我的应用程序调用fseeko64fopen64,并使用off64_t类型进行偏移.当我编译我的应用程序时,我收到以下警告和错误:

$ make myApp
gcc -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -O3 -Wformat -Wall -pedantic …
Run Code Online (Sandbox Code Playgroud)

c linux fopen darwin large-file-support

9
推荐指数
2
解决办法
6536
查看次数

Python类合并已排序的文件,如何改进?

背景:

我正在清理大型(不能保留在内存中)制表符分隔的文件.当我清理输入文件时,我在内存中建立了一个列表; 当它获得1,000,000个条目(内存大约1GB)时,我将其排序(使用下面的默认密钥)并将列表写入文件.此类用于将已排序的文件重新组合在一起.它适用于我迄今遇到的文件.到目前为止,我最大的案例是合并66个已排序的文件.

问题:

  1. 我的逻辑中有漏洞(它在哪里脆弱)?
  2. 我是否正确实施了合并排序算法?
  3. 有没有明显的改进?

示例数据:

这是其中一个文件中的一行的抽象:

'hash_of_SomeStringId\tSome String Id\t\t\twww.somelink.com\t\tOtherData\t\n'

外卖是我'SomeStringId'.lower().replace(' ', '')用作我的排序键.

原始代码:

class SortedFileMerger():
    """ A one-time use object that merges any number of smaller sorted 
        files into one large sorted file.

        ARGS:
            paths - list of paths to sorted files
            output_path - string path to desired output file
            dedup - (boolean) remove lines with duplicate keys, default = True
            key - use to override sort key, default = "line.split('\t')[1].lower().replace(' ', '')"
                  will be …
Run Code Online (Sandbox Code Playgroud)

python merge mergesort large-file-support

8
推荐指数
1
解决办法
4645
查看次数

iostream和大文件支持

我试图找到一个明确的答案而不能,所以我希望有人知道.

我正在Linux(32位操作系统)上使用GCC 4.x开发一个C++应用程序.此应用程序需要能够读取大小> 2GB的文件.

我真的想使用iostream的东西和FILE指针,但我找不到大文件#defines(_LARGEFILE_SOURCE,_LARGEFILE64_SOURCE,_FILE_OFFSET_BITS = 64)对iostream标头有什么影响.

我正在编译32位系统.任何指针都会有所帮助.

c++ iostream stl large-file-support large-files

7
推荐指数
1
解决办法
4245
查看次数

如何在Windows上安装Git大文件存储?

根据其文档,双击应该足够了.但是当我打开git bash并运行时git lfs init,它不起作用:

$ git lfs init
git: 'lfs' is not a git command. See 'git --help'.
Run Code Online (Sandbox Code Playgroud)

git github large-file-support git-lfs

6
推荐指数
2
解决办法
5458
查看次数

Paperclip,大文件上传和AWS

所以,我正在使用Paperclip和AWS-S3,这很棒.而且效果很好.但是只有一个问题:我需要上传非常大的文件.超过50兆字节.所以,nginx死了.显然,Paperclip在进入S3之前将东西存储到磁盘上?

我找到了这篇非常酷的文章,但它似乎也首先进入磁盘,然后在后台执行其他所有操作.

理想情况下,我可以在后台上传文件...我在使用PHP时有很少的经验,但到目前为止Rails没有.有人能指出我的大方向吗?

ruby-on-rails amazon-s3 large-file-support paperclip

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

大文件支持无法在Android上运行

我正在尝试为android 构建md5deep(http://md5deep.sourceforge.net/),但是使用默认的构建设置,sizeof(off_t) == 8失败的断言,指示(AFAIK)LFS未启用.我已经尝试通过添加-D_FILE_OFFSET_BITS=64gcc和g ++标志来启用,但它仍然没有做到这一点.添加行来打印_FILE_OFFSET_BITS和sizeof(off_t)的值表明前者确实是64,但后者是4而不是8.

有什么想法吗?

android gcc g++ large-file-support android-ndk

5
推荐指数
0
解决办法
354
查看次数

ftello() 和 fseeko() android 构建错误

我正在尝试为 64 位架构构建 Android L。

我的代码是这样的:

#if (HAS_LARGE_FILE_SUPPORT)
#define _FILE_OFFSET_BITS 64   //Defined in header file


/*Some File operations*/
#if HAS_LARGE_FILE_SUPPORT
     return fseeko(iFile, offset, seekmode);
#else
     return fseek(iFile, offset, seekmode);


/*Some File operations*/
    #if HAS_LARGE_FILE_SUPPORT
         return ftello(iFile, offset, seekmode);
    #else
         return ftell(iFile, offset, seekmode);
Run Code Online (Sandbox Code Playgroud)

我正在下面ftellofseeko错误:

error: call to 'ftello' declared with attribute error: not available with _FILE_OFFSET_BITS=64

error: call to 'fseeko' declared with attribute error: not available with _FILE_OFFSET_BITS=64
Run Code Online (Sandbox Code Playgroud)

我检查了fseekoftello,在手册页上提到_FILE_OFFSET_BITS使用值 64定义将变成 …

c android fseek ftell large-file-support

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

为什么在使用g ++而不是gcc进行编译时,在stdio.h中定义了_LARGEFILE_SOURCE?

如果使用gcc lfs.c -o lfs编译以下代码,则不会输出任何内容.但是,如果使用g ++ lfs.c -o lfs编译它,则会打印"由stdio.h!"定义的"_LARGEFILE_SOURCE".

#ifdef _LARGEFILE_SOURCE
int largefile_defined_at_start = 1;
#else
int largefile_defined_at_start = 0;
#endif

// This defines _LARGEFILE_SOURCE, but only in C++!
#include <stdio.h>

int main(void) {
#ifdef _LARGEFILE_SOURCE
  if (!largefile_defined_at_start)
    printf("_LARGEFILE_SOURCE defined by stdio.h!");
#endif
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

在任何一种情况下,编译器都没有定义_LARGEFILE_SOURCE:

gcc -dM -E - < /dev/null |grep _LARGEFILE_SOURCE |wc -l
0
g++ -dM -E - < /dev/null |grep _LARGEFILE_SOURCE |wc -l
0
Run Code Online (Sandbox Code Playgroud)

为什么stdio.h在通过g ++前端调用GCC时定义_LARGEFILE_SOURCE?

c c++ gcc large-file-support large-files

0
推荐指数
1
解决办法
299
查看次数