File System Access APIμ λν μ¬μΈ΅ λΆμμΌλ‘, λ‘컬 νμΌ μ‘°μ κΈ°λ₯κ³Ό μΉ μ ν리μΌμ΄μ μ μ€μν 보μ κ³ λ € μ¬νμ νꡬν©λλ€.
File System Access API: λ‘컬 νμΌ μμ κ³Ό 보μ κ²½κ³
File System Access API(μ΄μ λͺ μΉ: Native File System API)λ μΉ μ ν리μΌμ΄μ μ΄ μ¬μ©μμ λ‘컬 νμΌ μμ€ν κ³Ό μ§μ μνΈμμ©ν μ μλλ‘ νμ¬ μΉ μ ν리μΌμ΄μ κΈ°λ₯μ μμ΄ μ€μν μ§μ μ λνλ λλ€. μ΄λ λΈλΌμ°μ λ΄μμ μ§μ κ°λ ₯ν λ°μ€ν¬ν±κ³Ό κ°μ κ²½νμ μ°½μΆν μ μλ κ°λ₯μ±μ μ΄μ΄μ€λλ€. κ·Έλ¬λ μ΄λ¬ν μλ‘μ΄ νμλ μ μ€νκ² λ€λ£¨μ΄μΌ ν κ³ μ ν 보μ μνμ΄ λ°λ¦ λλ€. μ΄ κΈμμλ File System Access APIμ κΈ°λ₯, APIκ° μ€μ νλ 보μ κ²½κ³, κ·Έλ¦¬κ³ μ¬μ©μ μμ μ 보μ₯νκΈ° μν κ°λ°μ λͺ¨λ² μ¬λ‘λ₯Ό μ΄ν΄λ³΄κ² μ΅λλ€.
File System Access API μ΄ν΄νκΈ°
File System Access API μ΄μ μλ μΉ μ ν리μΌμ΄μ μ΄ λ‘컬 νμΌκ³Ό μνΈμμ©νκΈ° μν΄ μ£Όλ‘ νμΌ μ λ‘λ λ° λ€μ΄λ‘λμ μμ‘΄νμ΅λλ€. μ΄ μ κ·Ό λ°©μμ μ’ μ’ λ²κ±°λ‘κ³ μ¬μ©μκ° λ°μ€ν¬ν± μ ν리μΌμ΄μ μμ κΈ°λνλ μνν ν΅ν©μ΄ λΆμ‘±νμ΅λλ€. File System Access APIλ μΉ μ ν리μΌμ΄μ μ΄ λ€μκ³Ό κ°μ μμ μ μνν μ μλ λ μ§μ μ μ΄κ³ μ§κ΄μ μΈ λ°©λ²μ μ 곡ν©λλ€:
- νμΌ μ½κΈ°: μ¬μ©μμ νμΌ μμ€ν μ μλ νμΌμ μ½ν μΈ μ μ κ·Όν©λλ€.
- νμΌ μ°κΈ°: λ°μ΄ν°λ₯Ό μ¬μ©μμ νμΌ μμ€ν μ μλ νμΌμ μ§μ μ μ₯ν©λλ€.
- λλ ν°λ¦¬ μ κ·Ό: μ¬μ©μμ νμΌ μμ€ν μ μλ λλ ν°λ¦¬λ₯Ό νμνκ³ κ΄λ¦¬ν©λλ€.
- μ νμΌ λ° λλ ν°λ¦¬ μμ±: μ¬μ©μκ° νμ©ν μμΉ λ΄μ μ νμΌκ³Ό λλ ν°λ¦¬λ₯Ό μμ±ν©λλ€.
ν΅μ¬ κ°λ
μ΄ APIλ μ¬λ¬ μ£Όμ μΈν°νμ΄μ€λ₯Ό μ€μ¬μΌλ‘ μλν©λλ€:
- `FileSystemHandle`: νμΌκ³Ό λλ ν°λ¦¬ λͺ¨λλ₯Ό μν κΈ°λ³Έ μΈν°νμ΄μ€μ λλ€. `name` λ° `kind`(νμΌ λλ λλ ν°λ¦¬)μ κ°μ κ³΅ν΅ μμ±μ μ 곡ν©λλ€.
- `FileSystemFileHandle`: μ¬μ©μμ νμΌ μμ€ν μ μλ νμΌμ λνλ λλ€. νμΌμ μ½ν μΈ μ λ©νλ°μ΄ν°μ μ κ·Όν μ μμ΅λλ€.
- `FileSystemDirectoryHandle`: μ¬μ©μμ νμΌ μμ€ν μ μλ λλ ν°λ¦¬λ₯Ό λνλ λλ€. ν΄λΉ λλ ν°λ¦¬ λ΄μ νμΌκ³Ό νμ λλ ν°λ¦¬λ₯Ό νμνκ³ κ΄λ¦¬ν μ μμ΅λλ€.
- `FileSystemWritableFileStream`: νμΌμ λ°μ΄ν°λ₯Ό μ°κΈ° μν μ€νΈλ¦Όμ μ 곡ν©λλ€.
κΈ°λ³Έ μ¬μ© μμ
λ€μμ File System Access APIλ₯Ό μ¬μ©νμ¬ νμΌμ μ½λ λ°©λ²μ 보μ¬μ£Όλ κ°λ¨ν μμ μ λλ€:
async function readFile() {
try {
const [fileHandle] = await window.showOpenFilePicker();
const file = await fileHandle.getFile();
const contents = await file.text();
console.log(contents);
} catch (err) {
console.error('Failed to read file:', err);
}
}
κ·Έλ¦¬κ³ νμΌμ μ°λ λ°©λ²μ λ€μκ³Ό κ°μ΅λλ€:
async function writeFile(data) {
try {
const [fileHandle] = await window.showSaveFilePicker();
const writable = await fileHandle.createWritable();
await writable.write(data);
await writable.close();
console.log('Successfully wrote to file!');
} catch (err) {
console.error('Failed to write file:', err);
}
}
보μ κ²½κ³: μ¬μ©μ λ°μ΄ν° 보νΈ
λ¨μ© κ°λ₯μ±μ κ³ λ €νμ¬ File System Access APIλ 보μ μ‘°μΉμ μν΄ κ°λ ₯νκ² λ³΄νΈλ©λλ€. μ΄λ¬ν μ‘°μΉλ μ μμ μΈ μΉ μ ν리μΌμ΄μ μ΄ λͺ μμ μΈ λμ μμ΄ λ―Όκ°ν μ¬μ©μ λ°μ΄ν°μ μ κ·Όνλ κ²μ λ°©μ§νλλ‘ μ€κ³λμμ΅λλ€.
λμΌ μΆμ² μ μ± (Same-Origin Policy)
λμΌ μΆμ² μ μ± (SOP)μ μΉ λΈλΌμ°μ μ κ·Όλ³Έμ μΈ λ³΄μ λ©μ»€λμ¦μ λλ€. μ΄λ ν μΆμ²μ μ€ν¬λ¦½νΈκ° λ€λ₯Έ μΆμ²μ 리μμ€μ μ κ·Όνλ κ²μ μ νν©λλ€. File System Access APIμ λ§₯λ½μμ μ΄λ μΉ μ ν리μΌμ΄μ μ΄ μ€ν¬λ¦½νΈκ° μ€νλλ νμ΄μ§μ λμΌν μΆμ²(νλ‘ν μ½, λλ©μΈ, ν¬νΈ)λ₯Ό 곡μ νλ κ²½μ°μλ§ νμΌκ³Ό λλ ν°λ¦¬μ μ κ·Όν μ μμμ μλ―Έν©λλ€.
μμ: `https://example.com`μμ νΈμ€ν λλ μΉμ¬μ΄νΈλ μ¬μ©μκ° λͺ μμ μΌλ‘ κΆνμ λΆμ¬ν κ²½μ°μλ§ νμΌμ μ κ·Όν μ μμΌλ©°, λͺ μμ μΈ μ¬μ©μ κ°μ (μ: μ μ ν ν€λλ₯Ό μ¬μ©ν κ΅μ°¨ μΆμ² 리μμ€ κ³΅μ , μ΄λ μ§μ μ μΈ νμΌ μμ€ν μ κ·Όμλ μ μ©λμ§ μμ) μμ΄λ `https://anotherdomain.com`κ³Ό κ΄λ ¨λ νμΌμ μ κ·Όν μ μμ΅λλ€. μ΄λ μ μμ μΈ μΉμ¬μ΄νΈκ° λΈλΌμ°μ μμ μ€ν μ€μΈ λ€λ₯Έ μΉμ¬μ΄νΈλ μ ν리μΌμ΄μ μ νμΌμ μ‘°μ©ν μ κ·Όνλ κ²μ λ°©μ§ν©λλ€.
μ¬μ©μ κΆν λ° λμ
File System Access APIλ μΉ μ ν리μΌμ΄μ μ΄ λ‘컬 νμΌ μμ€ν μ μ κ·ΌνκΈ° μ μ λͺ μμ μΈ μ¬μ©μ λμλ₯Ό μꡬν©λλ€. μ΄λ μ¬μ©μκ° νμΌμ΄λ λλ ν°λ¦¬λ₯Ό μ ννλλ‘ μμ²νλ `showOpenFilePicker()` λ° `showSaveFilePicker()` λ©μλλ₯Ό ν΅ν΄ μ΄λ£¨μ΄μ§λλ€. λΈλΌμ°μ λ μ¬μ©μμκ² μ ν리μΌμ΄μ μ μμ²μ λν΄ μλ¦¬κ³ μ κ·Όμ νμ©νκ±°λ κ±°λΆν μ μλ λν μμλ₯Ό νμν©λλ€.
μ¬μ©μλ λΆμ¬λ μ κ·Ό μμ€μ λν΄ μΈλΆνλ μ μ΄λ₯Ό ν μ μμ΅λλ€. κ°λ³ νμΌ, νΉμ λλ ν°λ¦¬μ λν μ κ·Όμ νμ©νκ±°λ μ κ·Όμ μμ ν κ±°λΆν μ μμ΅λλ€.
μμ: μ¬μ§ νΈμ§ μΉ μ ν리μΌμ΄μ μ΄ μ¬μ©μμ μ¬μ§μ΄ ν¬ν¨λ λλ ν°λ¦¬μ λν μ κ·Όμ μμ²ν μ μμ΅λλ€. κ·Έλ¬λ©΄ μ¬μ©μλ ν΄λΉ νΉμ λλ ν°λ¦¬μ λν μ κ·Όμ νμ©νμ¬ μ ν리μΌμ΄μ μ΄ κ·Έ μμ μ΄λ―Έμ§ νμΌμ μ½κ³ μΈ μ μλλ‘ ν μ μμ΅λλ€. λν λ¨μΌ μ΄λ―Έμ§ νμΌμ λν μ κ·Όλ§ νμ©ν μλ μμ΅λλ€.
μΌμμ μΈ μ¬μ©μ νμ±ν
λ§μ File System Access API νΈμΆμ μΌμμ μΈ μ¬μ©μ νμ±νλ₯Ό μꡬν©λλ€. μ΄λ API νΈμΆμ΄ λ²νΌ ν΄λ¦μ΄λ ν€ λλ¦κ³Ό κ°μ μ¬μ©μ μμ μ μν΄ μ§μ νΈλ¦¬κ±°λμ΄μΌ ν¨μ μλ―Έν©λλ€. μ΄λ μΉ μ ν리μΌμ΄μ μ΄ μ¬μ©μκ° λͺ¨λ₯΄λ μ¬μ΄μ μ‘°μ©ν νμΌ μμ€ν μ μ κ·Όνλ κ²μ λ°©μ§ν©λλ€. μ΄λ νΉν 보μμ μ€μν©λλ€.
μμ: μ΄λ―Έμ§ νΈμ§κΈ°λ μ¬μ©μκ° λͺ μμ μΈ μ μ₯ λ²νΌ ν΄λ¦μΌλ‘ μ μ₯ μμ μ μμνμ§ μλ ν λͺ μ΄λ§λ€ μλμΌλ‘ μ μ₯ν μ μμ΅λλ€. μ΄λ μκΈ°μΉ μκ±°λ μμΉ μλ μλ νμΌ μμ μ λ°©μ§ν©λλ€.
μΆμ² λΉκ³΅κ° νμΌ μμ€ν (OPFS)
μΆμ² λΉκ³΅κ° νμΌ μμ€ν (OPFS)μ μΉ μ ν리μΌμ΄μ μ μΆμ²μ λΉκ³΅κ°μΈ μλλ°μ€ν νμΌ μμ€ν μ μ 곡ν©λλ€. μ΄λ₯Ό ν΅ν΄ μΉ μ ν리μΌμ΄μ μ λ€λ₯Έ μ ν리μΌμ΄μ μ΄λ μ¬μ©μμ νμΌ μμ€ν μ μ§μ λ ΈμΆνμ§ μκ³ μμ ν νκ²½ λ΄μμ νμΌμ μ μ₯νκ³ κ΄λ¦¬ν μ μμ΅λλ€.
OPFSλ λ€μ΄ν°λΈ νμΌ μμ€ν μμ μ νμ©νλ―λ‘ `localStorage`λ IndexedDBμ κ°μ μ ν΅μ μΈ λΈλΌμ°μ μ μ₯ μ΅μ μ λΉν΄ λ λμ μ±λ₯μ μ 곡ν©λλ€. κ·Έλ¬λ OPFSμ λν μ κ·Όμ μ¬μ ν λμΌ μΆμ² μ μ± μ μ μ©μ λ°μ΅λλ€.
μμ: κ²μ κ°λ° μΉ μ ν리μΌμ΄μ μ OPFSλ₯Ό μ¬μ©νμ¬ κ²μ μμ°, μ μ₯ νμΌ, κ΅¬μ± λ°μ΄ν°λ₯Ό μ μ₯ν μ μμ΅λλ€. μ΄λ μ΄λ¬ν νμΌλ€μ΄ ν΄λΉ κ²μμλ§ μ κ·Ό κ°λ₯νκ³ λ€λ₯Έ μΉ μ ν리μΌμ΄μ μ΄λ μ¬μ©μμ νμΌ μμ€ν μ λ ΈμΆλμ§ μλλ‘ λ³΄μ₯ν©λλ€. μ¬μ©μλ κ²μ μ체 λ΄μ νΉμ μΈν°νμ΄μ€λ₯Ό ν΅ν΄μλ§ μ΄λ¬ν νμΌμ λ³Ό μ μμ΅λλ€.
κΆν API (Permissions API)
κΆν API(Permissions API)λ File System Access APIμ λν νμ¬ κΆν μνλ₯Ό 쿼리νλ λ° μ¬μ©ν μ μμ΅λλ€. μ΄λ₯Ό ν΅ν΄ μΉ μ ν리μΌμ΄μ μ μ΄λ―Έ νμΌ μμ€ν μ μ κ·Όν κΆνμ΄ μλμ§ νμΈνκ³ νμν κ²½μ° κΆνμ μμ²ν μ μμ΅λλ€. `navigator.permissions` κ°μ²΄λ File System Access APIλ₯Ό ν¬ν¨ν λ€μν API κΈ°λ₯μ λν κΆν μνλ₯Ό νμΈνλ λ° μ¬μ©ν μ μλ `query()` λ©μλλ₯Ό μ 곡ν©λλ€.
μμ: νμΌ μμ€ν μ μ κ·ΌνκΈ° μ μ μΉ μ ν리μΌμ΄μ μ κΆν APIλ₯Ό μ¬μ©νμ¬ μ΄λ―Έ κΆνμ΄ μλμ§ νμΈν μ μμ΅λλ€. κΆνμ΄ μλ κ²½μ° `showOpenFilePicker()` λλ `showSaveFilePicker()`λ₯Ό μ¬μ©νμ¬ μ¬μ©μμκ² κΆνμ λΆμ¬νλλ‘ μμ²ν μ μμ΅λλ€.
async function checkFileSystemAccess() {
const status = await navigator.permissions.query({
name: 'file-system-write',
});
if (status.state === 'granted') {
console.log('File system access granted!');
// Proceed with file system operations
} else if (status.state === 'prompt') {
console.log('File system access requires user permission.');
// Prompt the user to grant permission
} else {
console.log('File system access denied.');
// Handle the denial appropriately
}
}
κ°λ°μλ₯Ό μν 보μ λͺ¨λ² μ¬λ‘
File System Access APIκ° κ°λ ₯ν 보μ λ©μ»€λμ¦μ μ 곡νμ§λ§, κ°λ°μλ μ¬μ©μ μμ μ 보μ₯νκ³ μ μ¬μ μΈ μ·¨μ½μ μ λ°©μ§νκΈ° μν΄ λͺ¨λ² μ¬λ‘λ₯Ό λ°λΌμΌ ν©λλ€.
μ΅μ κΆν μμΉ
μ ν리μΌμ΄μ μ΄ μλνλ λ° μ λμ μΌλ‘ νμν νμΌκ³Ό λλ ν°λ¦¬μλ§ μ κ·Όμ μμ²νμμμ€. μ 체 νμΌ μμ€ν μ λν κ΄λ²μν μ κ·Όμ μμ²νλ κ²μ νΌνμμμ€.
μμ: ν μ€νΈ νΈμ§κΈ°κ° `.txt` νμΌμ μ΄κ³ μ μ₯νκΈ°λ§ νλ©΄ λλ κ²½μ°, λͺ¨λ νμΌ νμμ΄ μλ `.txt` νμΌμ λν μ κ·Όλ§ μμ²ν΄μΌ ν©λλ€.
μ λ ₯ μ ν¨μ± κ²μ¬ λ° μ΄κ· (Sanitization)
νμΌμμ μ½μ λͺ¨λ λ°μ΄ν°λ μ²λ¦¬νκΈ° μ μ νμ μ ν¨μ±μ κ²μ¬νκ³ μ΄κ· νμμμ€. μ΄λ κ΅μ°¨ μ¬μ΄νΈ μ€ν¬λ¦½ν (XSS) λ° μ½λ μ£Όμ 곡격과 κ°μ μ·¨μ½μ μ λ°©μ§νλ λ° λμμ΄ λ©λλ€.
μμ: μΉ μ ν리μΌμ΄μ μ΄ νμΌμμ HTML μ½ν μΈ λ₯Ό μ½λ κ²½μ°, λΈλΌμ°μ μ νμνκΈ° μ μ μ μ¬μ μΌλ‘ μ μμ μΈ μλ°μ€ν¬λ¦½νΈ μ½λλ₯Ό μ κ±°νκΈ° μν΄ μ½ν μΈ λ₯Ό μ΄κ· ν΄μΌ ν©λλ€.
μ½ν μΈ λ³΄μ μ μ± (CSP)
μΉ μ ν리μΌμ΄μ μ΄ λ‘λνκ³ μ€νν μ μλ 리μμ€λ₯Ό μ ννκΈ° μν΄ μ½ν μΈ λ³΄μ μ μ± (CSP)μ μ¬μ©νμμμ€. μ΄λ XSS 곡격 λ° κΈ°ν μ νμ μ μ± μ½λ μ€ν μνμ μννλ λ° λμμ΄ λ©λλ€.
μμ: CSPλ μ ν리μΌμ΄μ μ΄ μ체 μΆμ²μμλ§ μ€ν¬λ¦½νΈλ₯Ό λ‘λνλλ‘ νμ©νκ³ μΈλΌμΈ μ€ν¬λ¦½νΈλ₯Ό μ°¨λ¨νλλ‘ κ΅¬μ±ν μ μμ΄, 곡격μκ° μ ν리μΌμ΄μ μ μ μ± μ½λλ₯Ό μ£Όμ νλ κ²μ λ°©μ§ν©λλ€.
μ κΈ°μ μΈ λ³΄μ κ°μ¬
μ μ¬μ μΈ μ·¨μ½μ μ μλ³νκ³ ν΄κ²°νκΈ° μν΄ μΉ μ ν리μΌμ΄μ μ μ κΈ°μ μΈ λ³΄μ κ°μ¬λ₯Ό μννμμμ€. μλνλ λꡬμ μλ μ½λ κ²ν λ₯Ό μ¬μ©νμ¬ μ ν리μΌμ΄μ μ΄ μμ νμ§ νμΈνμμμ€.
μμ: μ μ λΆμ λꡬλ₯Ό μ¬μ©νμ¬ μ ν리μΌμ΄μ μ½λμμ XSS, SQL μ£Όμ , μ½λ μ£Όμ κ³Ό κ°μ μΌλ°μ μΈ λ³΄μ μ·¨μ½μ μ μ€μΊνμμμ€.
μ΅μ μν μ μ§
λΈλΌμ°μ λ° κΈ°ν μννΈμ¨μ΄ κ΅¬μ± μμλ₯Ό μ΅μ 보μ ν¨μΉλ‘ μ λ°μ΄νΈνμμμ€. μ΄λ 곡격μκ° μ μ©ν μ μλ μλ €μ§ μ·¨μ½μ μΌλ‘λΆν° 보νΈνλ λ° λμμ΄ λ©λλ€.
μμ: μΉ λΈλΌμ°μ λ₯Ό μ κΈ°μ μΌλ‘ μ΅μ λ²μ μΌλ‘ μ λ°μ΄νΈνμ¬ μ΅μ 보μ μμ μ¬νμ΄ ν¬ν¨λλλ‘ νμμμ€.
μ°μν μ€λ₯ μ²λ¦¬
νμΌ μμ€ν μμ μ€μ λ°μν μ μλ λͺ¨λ μ€λ₯λ₯Ό μ°μνκ² μ²λ¦¬νκΈ° μν΄ κ°λ ₯ν μ€λ₯ μ²λ¦¬ λ©μ»€λμ¦μ ꡬννμμμ€. μ΄λ μκΈ°μΉ μμ λμμ λ°©μ§νκ³ μ ν리μΌμ΄μ μ΄ μμ μ μΌλ‘ μ μ§λλλ‘ ν©λλ€.
μμ: νμΌμ μ°Ύμ μ μκ±°λ μ½μ μ μλ κ²½μ°, μ ν리μΌμ΄μ μ μΆ©λμν€λ λμ μ¬μ©μμκ² μ μ΅ν μ€λ₯ λ©μμ§λ₯Ό νμνμμμ€.
νμΌ νμ₯μ μ μ
μ€ν κ°λ₯ν νμ₯μ(μ: `.exe`, `.bat`, `.sh`)λ₯Ό κ°μ§ νμΌμ μ²λ¦¬ν λλ μ£Όμνμμμ€. μ μ ν μ ν¨μ± κ²μ¬ λ° λ³΄μ κ²μ¬ μμ΄ νμΌ μμ€ν μμ μ§μ νμΌμ μ€ννμ§ λ§μμμ€.
μμ: μΉ μ ν리μΌμ΄μ μ΄ μ¬μ©μμκ² νμΌ μ λ‘λλ₯Ό νμ©νλ κ²½μ°, μ€ν κ°λ₯ν νμ₯μλ₯Ό κ°μ§ νμΌμ μ λ‘λλ₯Ό λ§κ±°λ, μ§μ μ€νλμ§ μλλ‘ νμΌ μ΄λ¦μ λ³κ²½ν΄μΌ ν©λλ€.
μμ ν νμΌ μ μ₯
μ ν리μΌμ΄μ μ΄ λ―Όκ°ν λ°μ΄ν°λ₯Ό νμΌμ μ μ₯νλ κ²½μ°, νμΌμ΄ μ μ νκ² μνΈνλκ³ λ¬΄λ¨ μ κ·ΌμΌλ‘λΆν° 보νΈλλμ§ νμΈνμμμ€. κ°λ ₯ν μνΈν μκ³ λ¦¬μ¦μ μ¬μ©νκ³ μνΈν ν€λ₯Ό μμ νκ² κ΄λ¦¬νμμμ€.
μμ: μΉ μ ν리μΌμ΄μ μ΄ μ¬μ©μ λΉλ°λ²νΈλ₯Ό νμΌμ μ μ₯νλ κ²½μ°, κ°λ ₯ν μνΈν μκ³ λ¦¬μ¦μ μ¬μ©νμ¬ νμΌμ μνΈννκ³ μνΈν ν€λ₯Ό μμ νκ² μ μ₯ν΄μΌ ν©λλ€.
κ°λ ₯ν μΈμ¦ λ° μΈκ° ꡬν
νμΌ μμ€ν μ λν μ κ·Όμ μ μ΄νκΈ° μν΄ κ°λ ₯ν μΈμ¦ λ° μΈκ° λ©μ»€λμ¦μ ꡬννμμμ€. μΈκ°λ μ¬μ©μλ§ λ―Όκ°ν νμΌκ³Ό λλ ν°λ¦¬μ μ κ·Όν μ μλλ‘ νμμμ€.
μμ: μ¬μ©μμκ² νμΌ μμ€ν μ κ·Ό κΆνμ λΆμ¬νκΈ° μ μ μ¬μ©μμ μ μμ νμΈνκΈ° μν΄ μμ ν μΈμ¦ μμ€ν μ μ¬μ©νμμμ€.
ν¬λ‘μ€ νλ«νΌ κ³ λ € μ¬ν
File System Access APIλ₯Ό μ¬μ©νλ μΉ μ ν리μΌμ΄μ μ κ°λ°ν λ ν¬λ‘μ€ νλ«νΌ νΈνμ±μ κ³ λ €νλ κ²μ΄ μ€μν©λλ€. λ€λ₯Έ μ΄μ 체μ (Windows, macOS, Linux, Android) λ° λΈλΌμ°μ λ APIμ λν μ§μ μμ€μ΄ λ€λ₯Ό μ μμ΅λλ€.
- κΈ°λ₯ κ°μ§: File System Access APIλ₯Ό μ¬μ©νκΈ° μ μ μ¬μ©μμ λΈλΌμ°μ μμ μ§μλλμ§ νμΈνκΈ° μν΄ κΈ°λ₯ κ°μ§λ₯Ό μ¬μ©νμμμ€.
- λΈλΌμ°μ νΈνμ±: μ§μλλ λͺ¨λ νλ«νΌμμ μ ν리μΌμ΄μ μ΄ μ¬λ°λ₯΄κ² μλνλμ§ νμΈνκΈ° μν΄ λ€λ₯Έ λΈλΌμ°μ μμ ν μ€νΈνμμμ€.
- μ΄μ 체μ μ°¨μ΄μ : λ€λ₯Έ μ΄μ 체μ κ°μ νμΌ μμ€ν ꡬ쑰 λ° κ·μΉμ μ°¨μ΄μ μ μΈμ§νμμμ€.
- νμΌ κ²½λ‘ μ²λ¦¬: λͺ¨λ νλ«νΌμμ μ ν리μΌμ΄μ μ΄ μ¬λ°λ₯΄κ² μλνλλ‘ νλ«νΌ λ 립μ μΈ νμΌ κ²½λ‘ μ²λ¦¬ κΈ°μ μ μ¬μ©νμμμ€.
File System Access API μ€μ μ¬μ© μμ
File System Access APIλ λ€μκ³Ό κ°μ λ€μν κ°λ ₯ν μΉ μ ν리μΌμ΄μ μ ꡬμΆνλ λ° μ¬μ©λ μ μμ΅λλ€:
- ν μ€νΈ νΈμ§κΈ°: μ¬μ©μμ νμΌ μμ€ν μμ μ§μ νμΌμ μ΄κ³ , νΈμ§νκ³ , μ μ₯ν μ μλ λͺ¨λ κΈ°λ₯μ κ°μΆ ν μ€νΈ νΈμ§κΈ°λ₯Ό λ§λλλ€. λΈλΌμ°μ μΈμ λ‘컬 μ€μΉκ° νμ μλ μΉ κΈ°λ° IDEλ₯Ό μμν΄ λ³΄μΈμ.
- μ΄λ―Έμ§ νΈμ§κΈ°: μ¬μ©μμ νμΌ μμ€ν μμ μ§μ μ΄λ―Έμ§λ₯Ό λ‘λ, μ‘°μ, μ μ₯ν μ μλ μ΄λ―Έμ§ νΈμ§κΈ°λ₯Ό κ°λ°ν©λλ€. μΉ κΈ°λ°μ ν¬ν μ΅ λμμ κ³ λ €ν΄ λ³΄μΈμ.
- μ½λ νΈμ§κΈ°: μ¬μ©μμ νμΌ μμ€ν μμ μ§μ μ½λ νμΌμ μ΄κ³ , νΈμ§νκ³ , μ μ₯ν μ μλ μ½λ νΈμ§κΈ°λ₯Ό ꡬμΆν©λλ€. λΈλΌμ°μ μμ μ€νλλ κ°λ²Όμ΄ VS Codeλ₯Ό μκ°ν΄ 보μΈμ.
- νμΌ κ΄λ¦¬μ: μ¬μ©μκ° λΈλΌμ°μ μμ μ§μ νμΌμ νμ, κ΄λ¦¬, μ 리ν μ μλ νμΌ κ΄λ¦¬μλ₯Ό λ§λλλ€. μ΄λ Finderλ νμκΈ°μ μΉ κΈ°λ° λμμ΄ λ μ μμ΅λλ€.
- λ¬Έμ λ·°μ΄: μ¬μ©μμ νμΌ μμ€ν μμ μ§μ λ€μν λ¬Έμ νμ(μ: PDF, DOCX)μ μ΄κ³ νμν μ μλ λ¬Έμ λ·°μ΄λ₯Ό κ°λ°ν©λλ€.
- κ²μ: κ²μμ΄ μ§ν μν©μ μ μ₯νκ³ , μ¬μ©μ μ§μ μ½ν μΈ λ° κ΅¬μ±μ μ¬μ©μμ νμΌ μμ€ν μμ μ§μ λ‘λν μ μλλ‘ ν©λλ€. μ¬μ©μμ λ‘컬 μ»΄ν¨ν°μμ μ μ₯λ κ²μμ κ°μ Έμ¬ μ μλ μΉ κΈ°λ° κ²μμ μμν΄ λ³΄μΈμ.
File System Access APIμ λμ
File System Access APIκ° μλΉν μ΄μ μ μ 곡νμ§λ§, μΉ μ ν리μΌμ΄μ μμ νμΌμ μ²λ¦¬νλ λ€λ₯Έ μ κ·Ό λ°©μλ μμ΅λλ€. μ΄λ¬ν λμμ μ ν리μΌμ΄μ μ νΉμ μꡬ μ¬νμ λ°λΌ νΉμ μν©μμ λ μ μ ν μ μμ΅λλ€.
- νμΌ μ λ‘λ: μ¬μ©μκ° μλ²μ νμΌμ μ λ‘λν μ μλλ‘ μ ν΅μ μΈ νμΌ μ λ‘λλ₯Ό μ¬μ©ν©λλ€. μ΄ μ κ·Ό λ°©μμ μλ² μΈ‘μμ νμΌμ μ²λ¦¬ν΄μΌ νλ μ ν리μΌμ΄μ μ μ ν©ν©λλ€.
- λ€μ΄λ‘λ: μ¬μ©μκ° μλ²μμ νμΌμ λ€μ΄λ‘λν μ μλλ‘ λ€μ΄λ‘λλ₯Ό μ¬μ©ν©λλ€. μ΄ μ κ·Ό λ°©μμ μ¬μ©μμκ² νμΌμ μ 곡ν΄μΌ νλ μ ν리μΌμ΄μ μ μ ν©ν©λλ€.
- λλκ·Έ μ€ λλ‘: μ¬μ©μκ° μΉ νμ΄μ§μ νμΌμ λλκ·Έ μ€ λλ‘ν μ μλλ‘ λλκ·Έ μ€ λλ‘μ μ¬μ©ν©λλ€. μ΄ μ κ·Ό λ°©μμ νμΌ μ λ‘λλ File System Access APIμ κ²°ν©λ μ μμ΅λλ€.
- ν΄λ¦½λ³΄λ API: ν΄λ¦½λ³΄λ APIλ μΉ μ ν리μΌμ΄μ μ΄ μμ€ν ν΄λ¦½λ³΄λμ μνΈμμ©νμ¬ μ¬μ©μκ° νμΌμ΄λ νμΌ μ½ν μΈ λ₯Ό 볡μ¬νκ³ λΆμ¬λ£μ μ μκ² ν©λλ€.
μΉ νμΌ μ κ·Όμ λ―Έλ
File System Access APIλ μ¬μ ν λ°μ νκ³ μμΌλ©°, μμΌλ‘ μλ‘μ΄ κΈ°λ₯κ³Ό κ°μ μ¬νμ΄ μΆκ°λ κ²μΌλ‘ μμλ©λλ€. μ μ¬μ μΈ λ―Έλ κ°λ° μ¬νμ λ€μκ³Ό κ°μ΅λλ€:
- ν₯μλ 보μ: μ μ¬μ μΈ μ·¨μ½μ μ ν΄κ²°νκ³ μ¬μ©μ λ°μ΄ν°λ₯Ό 보νΈνκΈ° μν 보μ λͺ¨λΈμ μΆκ°μ μΈ κ°μ .
- κΈ°λ₯ κ°ν: νμΌ λ©νλ°μ΄ν° μ‘°μ λ° νμΌ μ κΈκ³Ό κ°μ λ κ³ κΈ νμΌ μμ€ν μμ μ μ 곡νκΈ° μν μΆκ° κΈ°λ₯.
- λ λμ λΈλΌμ°μ μ§μ: ν¬λ‘μ€ νλ«νΌ νΈνμ±μ 보μ₯νκΈ° μν΄ λ€λ₯Έ λΈλΌμ°μ μμ APIλ₯Ό λ νλκ² μ±ν.
- λ€λ₯Έ APIμμ ν΅ν©: λ 볡μ‘νκ³ κ°λ ₯ν μΉ μ ν리μΌμ΄μ μ κ°λ₯νκ² νκΈ° μν΄ λ€λ₯Έ μΉ APIμμ ν΅ν©.
κ²°λ‘
File System Access APIλ μΉ μ ν리μΌμ΄μ μ μ¬μ©μμ λ‘컬 νμΌ μμ€ν κ³Ό μ§μ μνΈμμ©ν μ μλ λ₯λ ₯μ λΆμ¬νμ¬ μλ‘μ΄ μμ€μ κΈ°λ₯κ³Ό μ¬μ©μ κ²½νμ μ΄μ΄μ€λλ€. κ·Έλ¬λ μ΄ νμ μ± μκ° μκ² μ¬μ©λμ΄μΌ ν©λλ€. κ°λ°μλ APIμ μν΄ μ€μ λ 보μ κ²½κ³λ₯Ό μ΄ν΄νκ³ λͺ¨λ² μ¬λ‘λ₯Ό λ°λ¦μΌλ‘μ¨ μννκ³ μμ ν μ¬μ©μ κ²½νμ μ 곡νλ μμ νκ³ μ λ’°ν μ μλ μΉ μ ν리μΌμ΄μ μ λ§λ€ μ μμ΅λλ€.
μ¬μ©μ λ°μ΄ν°λ₯Ό 보νΈνκ³ μ μ¬μ μΈ μ·¨μ½μ μ λ°©μ§νκΈ° μν΄ μ¬μ©μ λμλ₯Ό μ°μ μνκ³ , μ λ ₯μ κ²μ¦νλ©°, κ°λ ₯ν 보μ μ‘°μΉλ₯Ό ꡬννλ κ²μ μμ§ λ§μμμ€. File System Access APIκ° κ³μ λ°μ ν¨μ λ°λΌ, μΉ μ ν리μΌμ΄μ μ μμ κ³Ό 보μμ 보μ₯νκΈ° μν΄ μ΅μ 보μ μ§μΉ¨κ³Ό λͺ¨λ² μ¬λ‘μ λν μ 보λ₯Ό μ§μμ μΌλ‘ νμ νλ κ²μ΄ μ€μν©λλ€.