logo

Programming Languages - IO

  • C: fopen, fclose, fread, fwrite, fseek
  • C++: std::ofstream, std::ifstream, std::fstream

Read File

JavaScript

Read file, fs.readFile will read file as binary

var data = fs.readFileSync('data.json');
console.log(data);
//<Buffer 7b 22 32 30 30 30 22 3a 5b 7b 22 52 61 6e 6b 22 3a 31 2c 22 41 69 72 70 6f 72 74 22 3a 22 20 48 61 72 74 73 66 69 65 6c 64 2d 4a 61 63 6b 73 6f 6e 20 41 ...>

Use .toString() to get String

var str = fs.readFileSync('data.txt').toString();

Use JSON.parse() to get JSON

var data = JSON.parse(fs.readFileSync('data.json'));

Python

with open('filepath') as f:
    lines = f.read()

This will read all the lines at once, and may cause memory issue for large files.

To read and process the file line by line:

for line in open(path):
    do_something(line)

Write File

JavaScript

Write file, use JSON.stringify()

fs.writeFile('filename.json', JSON.stringify(data), null, 2);

List Files

Go

recursively visit:

filepath.Walk()

Python

Returning a list of file names:

>>> import os
>>> os.listdir(path)
['foo.txt', 'bar.txt']

JavaScript

import { statSync, readdirSync } from 'fs';

const files = [];

function getFiles(parent) {
  readdirSync(parent).forEach((filename) => {
    const filepath = parent + '/' + filename;
    if (statSync(filepath).isDirectory()) {
      getFiles(filepath);
    } else {
      files.push(filepath);
    }
  });
}

getFiles('path/to/parent/folder');

Open Files

Python

open as binary

open('filepath', 'rb')

use default codec(utf-8)

open('filepath')

Create folder if not exist

Javascrip

import { existsSync, mkdirSync } from 'fs';

const dir = 'tmp';
if (!existsSync(dir)) {
  mkdirSync(dir);
}

Python

if not os.path.exists(path):
    os.makedirs(path)

Remove if file already exists:

Python

if os.path.exists(path):
    os.remove(path)

Remove dirs recursively if dir is empty

Python

os.rmdir(path)
os.removedirs(path)

Remove dirs recursively even if they are not empty

Python

shutil.rmtree(path)

Expand Vars

Python

This will find JAVA_HOME from your settings and expand it to the path.

open(os.path.expandvars('$JAVA_HOME/foo.bar'))

Get Parent

Go

filepath.Dir()