标签: file-io

mmap()与阅读块

我正在开发一个程序,该程序将处理可能大小为100GB或更大的文件.这些文件包含一组可变长度记录.我已经启动并运行了第一个实现,现在我正在寻求提高性能,特别是在输入文件被多次扫描时更有效地进行I/O.

mmap()通过C++的fstream库使用和读取块有经验吗?我想做的是从磁盘读取大块到缓冲区,从缓冲区处理完整记录,然后阅读更多.

mmap()代码可能会变得非常凌乱,因为mmap"d块需要躺在页大小的边界(我的理解)和记录可能潜在般划过页面边界.使用fstreams,我可以寻找记录的开头并再次开始阅读,因为我们不仅限于阅读位于页面大小边界的块.

如何在不实际编写完整实现的情况下决定这两个选项?任何经验法则(例如,mmap()快2倍)或简单测试?

c++ file-io fstream mmap

172
推荐指数
6
解决办法
7万
查看次数

如何用Java编写UTF-8文件?

我有一些当前的代码,问题是它创建了一个1252代码页文件,我想强制它创建一个UTF-8文件

任何人都可以帮我这个代码,因为我说它目前工作...但我需要强制保存在utf ..我能传递一个参数或什么?

这就是我所拥有的,任何帮助都非常感激

var out = new java.io.FileWriter( new java.io.File( path )),
        text = new java.lang.String( src || "" );
    out.write( text, 0, text.length() );
    out.flush();
    out.close();
Run Code Online (Sandbox Code Playgroud)

java file-io utf-8

171
推荐指数
7
解决办法
34万
查看次数

如何删除整个文件夹和内容?

我希望我的应用程序的用户能够删除DCIM文件夹(位于SD卡上并包含子文件夹).

这有可能,如果是这样的话怎么样?

directory file-io android delete-directory

169
推荐指数
13
解决办法
19万
查看次数

getResourceAsStream()vs FileInputStream

我试图在webapp中加载一个文件,FileNotFound当我使用时我得到了一个例外FileInputStream.但是,使用相同的路径,我能够在我这样做时加载文件getResourceAsStream().这两种方法之间有什么区别,为什么一种方法有效而另一方方法无效?

java file-io web-applications fileinputstream

168
推荐指数
5
解决办法
19万
查看次数

如何通过PHP删除文件?

如果文件在另一个目录中,如何使用PHP从我的服务器中删除文件?

这是我的页面布局:

  • projects/backend/removeProjectData.php (此文件删除数据库的所有条目,还应删除相关文件)
  • public_files/22.pdf (文件所在的位置.)

我正在使用这个unlink功能:

unlink('../../public_files/' . $fileName);

但这总是给我一个文件不存在的错误.有任何想法吗?

php file-io

168
推荐指数
5
解决办法
31万
查看次数

167
推荐指数
7
解决办法
18万
查看次数

C逐行读取文件

我写了这个函数来从文件中读取一行:

const char *readLine(FILE *file) {

    if (file == NULL) {
        printf("Error: file pointer is null.");
        exit(1);
    }

    int maximumLineLength = 128;
    char *lineBuffer = (char *)malloc(sizeof(char) * maximumLineLength);

    if (lineBuffer == NULL) {
        printf("Error allocating memory for line buffer.");
        exit(1);
    }

    char ch = getc(file);
    int count = 0;

    while ((ch != '\n') && (ch != EOF)) {
        if (count == maximumLineLength) {
            maximumLineLength += 128;
            lineBuffer = realloc(lineBuffer, maximumLineLength);
            if (lineBuffer == NULL) {
                printf("Error reallocating space for …
Run Code Online (Sandbox Code Playgroud)

c file-io std line

165
推荐指数
7
解决办法
73万
查看次数

getResourceAsStream返回null

我正在我的Java项目的已编译JAR中的包中加载一个文本文件.相关目录结构如下:

/src/initialization/Lifepaths.txt
Run Code Online (Sandbox Code Playgroud)

用于加载文件的代码是:

public class Lifepaths {
    public static void execute() {
        System.out.println(Lifepaths.class.getClass().
            getResourceAsStream("/initialization/Lifepaths.txt"));
    }

    private Lifepaths() {}

    //This is temporary; will eventually be called from outside
    public static void main(String[] args) {execute();}
}
Run Code Online (Sandbox Code Playgroud)

null无论我使用什么,打印输出都会打印出来.我不确定为什么以上都行不通,所以我也尝试过:

  • "/src/initialization/Lifepaths.txt"
  • "initialization/Lifepaths.txt"
  • "Lifepaths.txt"

这些都不奏效. 了许多 问题至今的话题,但他们都不是有帮助的-通常情况下,他们只是说来加载使用根路径,这我已经在做的文件.那,或者只是从当前目录加载文件(只是加载filename),我也尝试过.该文件正在具有适当名称的适当位置编译到JAR中.

我该如何解决这个问题?

java file-io resources

163
推荐指数
9
解决办法
30万
查看次数

在C++中将整个文件读入std :: string的最佳方法是什么?

如何将文件读入a std::string,即一次读取整个文件?

文本或二进制模式应由调用者指定.该解决方案应符合标准,便携且高效.它不应该不必要地复制字符串的数据,它应该避免在读取字符串时重新分配内存.

实现此目的的一种方法是统计文件大小,调整大小std::stringfread()进入std::string's const_cast<char*>()' data().这要求std::string数据是连续的,这是标准不需要的,但似乎是所有已知实现的情况.更糟糕的是,如果在文本模式下读取文件,则其std::string大小可能与文件大小不同.

一个完全正确的,符合标准的和便携式解决方案,可以构建使用std::ifstreamrdbuf()进入std::ostringstream,并从那里进入std::string.但是,这可能会复制字符串数据和/或不必要地重新分配内存.所有相关的标准库实现是否足够智能以避免所有不必要的开销?还有另一种方法吗?我是否错过了一些已经提供所需功能的隐藏Boost功能?

请显示您的建议如何实施.

void slurp(std::string& data, bool is_binary)
Run Code Online (Sandbox Code Playgroud)

考虑到上面的讨论.

c++ string file-io

155
推荐指数
10
解决办法
6万
查看次数

如何在Scala中写入文件?

对于阅读,有一个有用的抽象Source.如何在文本文件中写入行?

file-io scala scala-2.8

153
推荐指数
11
解决办法
14万
查看次数