ファイルとフォルダの操作
はじめに
Netuno プラットフォームのポリグロット・バックエンドコードでは、任意のファイルやフォルダを操作できます。
操作とは、ファイルやフォルダの作成、名前の変更、削除、ファイル内容の変更、フォルダ内容の一覧表示などです。一般的に、プログラムから実行する必要があるのはこれらの操作です。
Netuno プラットフォームには、アプリケーション内部のフォルダやファイルだけでなく、アプリケーション外のシステム全体の任意のファイルやフォルダも操作できるローコードプログラミング機能があります。
何らかのファイルを扱う必要がある処理を自動化したい場合に便利です。具体的な方法を見ていきましょう。
ファイルを操作できるポリグロット・ローコードプログラミング機能は次のとおりです:
_app- アプリケーション_storage- ストレージ_os- オペレーティングシステム
これらのリソースでは、次のメソッドを利用できます:
.file- 既存のファイル。.folder- 既存のフォルダ。.path- 汎用パス。ファイルまたはフォルダのいずれかで、存在する場合も存在しない場合もあります。
これらのメソッドでは File 型のオブジェクトを取得できます。このオブジェクトは、ファイル、フォルダ、パス全般を操作するためのすべての手段を提供し、次のような操作を実行できます:
- ファイルとフォルダの作成。
- ファイルとフォルダの削除。
- フォルダ内容の一覧表示。
- ファイルとフォルダの名前変更。
- ファイルへのデータの読み書き。
- フォルダとそのサブフォルダおよびファイルの再帰的な削除。
アプリケーション
アプリケーション構造内でファイルとフォルダを操作する主要な処理には、_app リソースを使用します:
アプリケーション内のフォルダ
存在するフォルダを取得することを保証します。例:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
const myFolder = _app.folder("my/folder")
const myFolder = _app.folder("my/folder")
myFolder = _app.folder("my/folder")
myFolder = _app.folder("my/folder")
val myFolder = _app.folder("my/folder")
final myFolder = _app.folder("my/folder")
アプリケーション内のファイル
存在するファイルを取得することを保証します。例:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
const myFile = _app.file("my/folder/file.txt")
const myFile = _app.file("my/folder/file.txt")
myFile = _app.file("my/folder/file.txt")
myFile = _app.file("my/folder/file.txt")
val myFile = _app.file("my/folder/file.txt")
final myFile = _app.file("my/folder/file.txt")
アプリケーション内のパス
ファイルまたはフォルダのパスを、存在するかどうかに関係なく取得します。例:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
const newFile = _app.path("my/folder/new-file.txt")
const newFile = _app.path("my/folder/new-file.txt")
newFile = _app.path("my/folder/new-file.txt")
newFile = _app.path("my/folder/new-file.txt")
val newFile = _app.path("my/folder/new-file.txt")
final newFile = _app.path("my/folder/new-file.txt")
ストレージ
アプリケーションの 📁 storage フォルダ内でファイルとフォルダを操作する主要な処理には、_storage リソースを使用します:
ストレージ内のフォルダ
存在するフォルダを取得することを保証します。例:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
// フォルダの実際のパスは次のようになります:
// storage/filesystem/server/my/folder
const storageMyFolder = _storage.filesystem("server", "my/folder")
const myFolder = storageMyFolder.folder()
// フォルダの実際のパスは次のようになります:
// storage/filesystem/server/my/folder
const storageMyFolder = _storage.filesystem("server", "my/folder")
const myFolder = storageMyFolder.folder()
# フォルダの実際のパスは次のようになります:
# storage/filesystem/server/my/folder
storageMyFolder = _storage.filesystem("server", "my/folder")
myFolder = storageMyFolder.folder()
# フォルダの実際のパスは次のようになります:
# storage/filesystem/server/my/folder
storageMyFolder = _storage.filesystem("server", "my/folder")
myFolder = storageMyFolder.folder()
// フォルダの実際のパスは次のようになります:
// storage/filesystem/server/my/folder
val storageMyFolder = _storage.filesystem("server", "my/folder")
val myFolder = storageMyFolder.folder()
// フォルダの実際のパスは次のようになります:
// storage/filesystem/server/my/folder
final storageMyFolder = _storage.filesystem("server", "my/folder")
final myFolder = storageMyFolder.folder()
ストレージ内のファイル
存在するファイルを取得することを保証します。例:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
// ファイルの実際のパスは次のようになります:
// storage/filesystem/server/my/folder/file.txt
const storageFile = _storage.filesystem("server", "my/folder", "file.txt")
const file = storageFile.file()
// ファイルの実際のパスは次のようになります:
// storage/filesystem/server/my/folder/file.txt
const storageFile = _storage.filesystem("server", "my/folder", "file.txt")
const file = storageFile.file()
# ファイルの実際のパスは次のようになります:
# storage/filesystem/server/my/folder/file.txt
storageFile = _storage.filesystem("server", "my/folder", "file.txt")
file = storageFile.file()
# ファイルの実際のパスは次のようになります:
# storage/filesystem/server/my/folder/file.txt
storageFile = _storage.filesystem("server", "my/folder", "file.txt")
file = storageFile.file()
// ファイルの実際のパスは次のようになります:
// storage/filesystem/server/my/folder/file.txt
val storageFile = _storage.filesystem("server", "my/folder", "file.txt")
val file = storageFile.file()
// ファイルの実際のパスは次のようになります:
// storage/filesystem/server/my/folder/file.txt
final storageFile = _storage.filesystem("server", "my/folder", "file.txt")
final file = storageFile.file()
ストレージ内のパス
ファイルまたはフォルダのパスを、存在するかどうかに関係なく取得します。例:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
// 新しいフォルダの実際のパスは次のようになります:
// storage/filesystem/server/my/new-folder
const storageFolder = _storage.filesystem("server", "my/new-folder")
const folder = storageFolder.path()
// 新しいファイルの実際のパスは次のようになります:
// storage/filesystem/server/my/folder/new-file.txt
const storageFile = _storage.filesystem("server", "my/folder", "new-file.txt")
const file = storageFile.path()
// 新しいフォルダの実際のパスは次のようになります:
// storage/filesystem/server/my/new-folder
const storageFolder = _storage.filesystem("server", "my/new-folder")
const folder = storageFolder.path()
// 新しいファイルの実際のパスは次のようになります:
// storage/filesystem/server/my/folder/new-file.txt
const storageFile = _storage.filesystem("server", "my/folder", "new-file.txt")
const file = storageFile.path()
# 新しいフォルダの実際のパスは次のようになります:
# storage/filesystem/server/my/new-folder
storageFolder = _storage.filesystem("server", "my/new-folder")
folder = storageFolder.path()
# 新しいファイルの実際のパスは次のようになります:
# storage/filesystem/server/my/folder/new-file.txt
storageFile = _storage.filesystem("server", "my/folder", "new-file.txt")
file = storageFile.path()
# 新しいフォルダの実際のパスは次のようになります:
# storage/filesystem/server/my/new-folder
storageFolder = _storage.filesystem("server", "my/new-folder")
folder = storageFolder.path()
# 新しいファイルの実際のパスは次のようになります:
# storage/filesystem/server/my/folder/new-file.txt
storageFile = _storage.filesystem("server", "my/folder", "new-file.txt")
file = storageFile.path()
// 新しいフォルダの実際のパスは次のようになります:
// storage/filesystem/server/my/new-folder
val storageFolder = _storage.filesystem("server", "my/new-folder")
val folder = storageFolder.path()
// 新しいファイルの実際のパスは次のようになります:
// storage/filesystem/server/my/folder/new-file.txt
val storageFile = _storage.filesystem("server", "my/folder", "new-file.txt")
val file = storageFile.path()
// 新しいフォルダの実際のパスは次のようになります:
// storage/filesystem/server/my/new-folder
final storageFolder = _storage.filesystem("server", "my/new-folder")
final folder = storageFolder.path()
// 新しいファイルの実際のパスは次のようになります:
// storage/filesystem/server/my/folder/new-file.txt
final storageFile = _storage.filesystem("server", "my/folder", "new-file.txt")
final file = storageFile.path()
オペレーティングシステム
オペレーティングシステム上の任意の場所でファイルとフォルダを操作する主要な処理には、_os リソースを使用します:
オペレーティングシステム内のフォルダ
存在するフォルダを取得することを保証します。例:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
const myFolder = _os.folder("/tmp/my/folder")
const myFolder = _os.folder("/tmp/my/folder")
myFolder = _os.folder("/tmp/my/folder")
myFolder = _os.folder("/tmp/my/folder")
val myFolder = _os.folder("/tmp/my/folder")
final myFolder = _os.folder("/tmp/my/folder")
オペレーティングシステム内のファイル
存在するファイルを取得することを保証します。例:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
const myFile = _os.file("/tmp/my/folder/file.txt")
const myFile = _os.file("/tmp/my/folder/file.txt")
myFile = _os.file("/tmp/my/folder/file.txt")
myFile = _os.file("/tmp/my/folder/file.txt")
val myFile = _os.file("/tmp/my/folder/file.txt")
final myFile = _os.file("/tmp/my/folder/file.txt")
オペレーティングシステム内のパス
ファイルまたはフォルダのパスを、存在するかどうかに関係なく取得します。例:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
const newFile = _os.path("/tmp/my/folder/new-file.txt")
const newFile = _os.path("/tmp/my/folder/new-file.txt")
newFile = _os.path("/tmp/my/folder/new-file.txt")
newFile = _os.path("/tmp/my/folder/new-file.txt")
val newFile = _os.path("/tmp/my/folder/new-file.txt")
final newFile = _os.path("/tmp/my/folder/new-file.txt")
フォルダの作成
mkdir メソッドはフォルダを作成します。
次の例では、アプリケーションのルートに特定のフォルダを作成します:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
const folder = _app.path("temp")
folder.mkdir()
const folder = _app.path("temp")
folder.mkdir()
folder = _app.path("temp")
folder.mkdir()
folder = _app.path("temp")
folder.mkdir()
val folder = _app.path("temp")
folder.mkdir()
final folder = _app.path("temp")
folder.mkdir()
既存のフォルダ内にサブフォルダを作成するには、フォルダ階層を / で区切った完全なパスを指定します:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
const subfolder = _app.path("temp/other")
subfolder.mkdir()
const subfolder = _app.path("temp/other")
subfolder.mkdir()
subfolder = _app.path("temp/other")
subfolder.mkdir()
subfolder = _app.path("temp/other")
subfolder.mkdir()
val subfolder = _app.path("temp/other")
subfolder.mkdir()
final subfolder = _app.path("temp/other")
subfolder.mkdir()
一方、mkdirs は、存在しない場合に前のフォルダやサブフォルダを作成するため、アプリケーション内にフォルダ構造を作成できます。例:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
const folderPath = _app.path("temp/a/b/c")
folderPath.mkdirs()
const folderPath = _app.path("temp/a/b/c")
folderPath.mkdirs()
folderPath = _app.path("temp/a/b/c")
folderPath.mkdirs()
folderPath = _app.path("temp/a/b/c")
folderPath.mkdirs()
val folderPath = _app.path("temp/a/b/c")
folderPath.mkdirs()
final folderPath = _app.path("temp/a/b/c")
folderPath.mkdirs()
_storage リソースには ensurePath メソッドがあり、パスが存在するかを確認し、存在しない場合は作成します:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
const file = _storage.filesystem(
"public",
"temp/subfolder",
"file.txt"
)
// フォルダ構造が存在しない場合は作成します:
file.ensurePath()
const file = _storage.filesystem(
"public",
"temp/subfolder",
"file.txt"
)
// フォルダ構造が存在しない場合は作成します:
file.ensurePath()
file = _storage.filesystem(
"public",
"temp/subfolder",
"file.txt"
)
# フォルダ構造が存在しない場合は作成します:
file.ensurePath()
file = _storage.filesystem(
"public",
"temp/subfolder",
"file.txt"
)
# フォルダ構造が存在しない場合は作成します:
file.ensurePath()
val file = _storage.filesystem(
"public",
"temp/subfolder",
"file.txt"
)
// フォルダ構造が存在しない場合は作成します:
file.ensurePath()
final file = _storage.filesystem(
"public",
"temp/subfolder",
"file.txt"
)
// フォルダ構造が存在しない場合は作成します:
file.ensurePath()
したがって、ensurePath はフォルダ構造が存在することを保証します。
ファイルとフォルダの削除
delete メソッドでは、フォルダとファイルの両方を削除できます。ただしフォルダは空である必要があります。例:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
// 空のフォルダを削除します:
const emptyFolder = _app.folder("folder/empty")
emptyFolder.delete()
// ファイルを削除します:
const file = _app.file("folder/file.txt")
file.delete()
// パス(空のフォルダまたはファイル)を削除します:
const targetPath = _app.path("folder1/file-or-empty-folder")
targetPath.delete()
// 空のフォルダを削除します:
const emptyFolder = _app.folder("folder/empty")
emptyFolder.delete()
// ファイルを削除します:
const file = _app.file("folder/file.txt")
file.delete()
// パス(空のフォルダまたはファイル)を削除します:
const targetPath = _app.path("folder1/file-or-empty-folder")
targetPath.delete()
# 空のフォルダを削除します:
emptyFolder = _app.folder("folder/empty")
emptyFolder.delete()
# ファイルを削除します:
file = _app.file("folder/file.txt")
file.delete()
# パス(空のフォルダまたはファイル)を削除します:
targetPath = _app.path("folder1/file-or-empty-folder")
targetPath.delete()
# 空のフォルダを削除します:
emptyFolder = _app.folder("folder/empty")
emptyFolder.delete()
# ファイルを削除します:
file = _app.file("folder/file.txt")
file.delete()
# パス(空のフォルダまたはファイル)を削除します:
targetPath = _app.path("folder1/file-or-empty-folder")
targetPath.delete()
// 空のフォルダを削除します:
val emptyFolder = _app.folder("folder/empty")
emptyFolder.delete()
// ファイルを削除します:
val file = _app.file("folder/file.txt")
file.delete()
// パス(空のフォルダまたはファイル)を削除します:
val targetPath = _app.path("folder1/file-or-empty-folder")
targetPath.delete()
// 空のフォルダを削除します:
final emptyFolder = _app.folder("folder/empty")
emptyFolder.delete()
// ファイルを削除します:
final file = _app.file("folder/file.txt")
file.delete()
// パス(空のフォルダまたはファイル)を削除します:
final targetPath = _app.path("folder1/file-or-empty-folder")
targetPath.delete()
deleteAll では、すべて、つまりすべてのファイル、フォルダ、サブフォルダを再帰的に削除できます:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
// フォルダとその内容をすべて再帰的に削除します:
const emptyFolder = _app.folder("folder/example")
emptyFolder.deleteAll()
// フォルダのパスとその内部のすべての内容を削除します。
// サブフォルダとファイルを含みます:
const targetPath = _app.path("path/folder")
targetPath.deleteAll()
// フォルダとその内容をすべて再帰的に削除します:
const emptyFolder = _app.folder("folder/example")
emptyFolder.deleteAll()
// フォルダのパスとその内部のすべての内容を削除します。
// サブフォルダとファイルを含みます:
const targetPath = _app.path("path/folder")
targetPath.deleteAll()
# フォルダとその内容をすべて再帰的に削除します:
emptyFolder = _app.folder("folder/example")
emptyFolder.deleteAll()
# フォルダのパスとその内部のすべての内容を削除します。
# サブフォルダとファイルを含みます:
targetPath = _app.path("path/folder")
targetPath.deleteAll()
# フォルダとその内容をすべて再帰的に削除します:
emptyFolder = _app.folder("folder/example")
emptyFolder.deleteAll()
# フォルダのパスとその内部のすべての内容を削除します。
# サブフォルダとファイルを含みます:
targetPath = _app.path("path/folder")
targetPath.deleteAll()
// フォルダとその内容をすべて再帰的に削除します:
val emptyFolder = _app.folder("folder/example")
emptyFolder.deleteAll()
// フォルダのパスとその内部のすべての内容を削除します。
// サブフォルダとファイルを含みます:
val targetPath = _app.path("path/folder")
targetPath.deleteAll()
// フォルダとその内容をすべて再帰的に削除します:
final emptyFolder = _app.folder("folder/example")
emptyFolder.deleteAll()
// フォルダのパスとその内部のすべての内容を削除します。
// サブフォルダとファイルを含みます:
final targetPath = _app.path("path/folder")
targetPath.deleteAll()
フォルダ内のファイルだけを削除し、サブフォルダ内の何も削除しない場合は、deleteFiles を使用します。特定の拡張子のファイルだけを削除したい場合は拡張子を指定できます:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
// フォルダ内のファイルのみを削除します:
const folder = _app.folder("folder/example")
folder.deleteFiles()
// フォルダ内のJPG拡張子のファイルのみを削除します:
const targetPath = _app.path("path/folder")
targetPath.deleteFiles("jpg")
// フォルダ内のファイルのみを削除します:
const folder = _app.folder("folder/example")
folder.deleteFiles()
// フォルダ内のJPG拡張子のファイルのみを削除します:
const targetPath = _app.path("path/folder")
targetPath.deleteFiles("jpg")
# フォルダ内のファイルのみを削除します:
folder = _app.folder("folder/example")
folder.deleteFiles()
# フォルダ内のJPG拡張子のファイルのみを削除します:
targetPath = _app.path("path/folder")
targetPath.deleteFiles("jpg")
# フォルダ内のファイルのみを削除します:
folder = _app.folder("folder/example")
folder.deleteFiles()
# フォルダ内のJPG拡張子のファイルのみを削除します:
targetPath = _app.path("path/folder")
targetPath.deleteFiles("jpg")
// フォルダ内のファイルのみを削除します:
val folder = _app.folder("folder/example")
folder.deleteFiles()
// フォルダ内のJPG拡張子のファイルのみを削除します:
val targetPath = _app.path("path/folder")
targetPath.deleteFiles("jpg")
// フォルダ内のファイルのみを削除します:
final folder = _app.folder("folder/example")
folder.deleteFiles()
// フォルダ内のJPG拡張子のファイルのみを削除します:
final targetPath = _app.path("path/folder")
targetPath.deleteFiles("jpg")
ファイルだけを再帰的に削除し、フォルダ構造を維持する場合は、deleteAllFiles を使用します。特定の種類のファイルだけを削除したい場合は拡張子を指定できます。次の2つの例を見てください:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
// フォルダ内とサブフォルダ内のすべてのファイルを削除します:
const folder = _app.folder("folder/example")
folder.deleteAllFiles()
// フォルダ内とサブフォルダ内のJPG拡張子のすべてのファイルを削除します:
const targetPath = _app.path("path/folder")
targetPath.deleteAllFiles("jpg")
// フォルダ内とサブフォルダ内のすべてのファイルを削除します:
const folder = _app.folder("folder/example")
folder.deleteAllFiles()
// フォルダ内とサブフォルダ内のJPG拡張子のすべてのファイルを削除します:
const targetPath = _app.path("path/folder")
targetPath.deleteAllFiles("jpg")
# フォルダ内とサブフォルダ内のすべてのファイルを削除します:
folder = _app.folder("folder/example")
folder.deleteAllFiles()
# フォルダ内とサブフォルダ内のJPG拡張子のすべてのファイルを削除します:
targetPath = _app.path("path/folder")
targetPath.deleteAllFiles("jpg")
# フォルダ内とサブフォルダ内のすべてのファイルを削除します:
folder = _app.folder("folder/example")
folder.deleteAllFiles()
# フォルダ内とサブフォルダ内のJPG拡張子のすべてのファイルを削除します:
targetPath = _app.path("path/folder")
targetPath.deleteAllFiles("jpg")
// フォルダ内とサブフォルダ内のすべてのファイルを削除します:
val folder = _app.folder("folder/example")
folder.deleteAllFiles()
// フォルダ内とサブフォルダ内のJPG拡張子のすべてのファイルを削除します:
val targetPath = _app.path("path/folder")
targetPath.deleteAllFiles("jpg")
// フォルダ内とサブフォルダ内のすべてのファイルを削除します:
final folder = _app.folder("folder/example")
folder.deleteAllFiles()
// フォルダ内とサブフォルダ内のJPG拡張子のすべてのファイルを削除します:
final targetPath = _app.path("path/folder")
targetPath.deleteAllFiles("jpg")
名前の変更または移動
フォルダを移動することは、名前を変更することと同じです:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
const folder = _app.folder("temp")
folder.renameTo("test")
const folder = _app.folder("temp")
folder.renameTo("test")
folder = _app.folder("temp")
folder.renameTo("test")
folder = _app.folder("temp")
folder.renameTo("test")
val folder = _app.folder("temp")
folder.renameTo("test")
final folder = _app.folder("temp")
folder.renameTo("test")
フォルダの名前を変更し、フォルダ階層内でのレベルを変更することは、フォルダを移動することと同じです:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
const folder = _app.folder("temp/a/b")
folder.renameTo("test/z")
const folder = _app.folder("temp/a/b")
folder.renameTo("test/z")
folder = _app.folder("temp/a/b")
folder.renameTo("test/z")
folder = _app.folder("temp/a/b")
folder.renameTo("test/z")
val folder = _app.folder("temp/a/b")
folder.renameTo("test/z")
final folder = _app.folder("temp/a/b")
folder.renameTo("test/z")
また、名前を変更せずにサブフォルダを移動するには、renameTo メソッドで新しいパスを指定するだけです:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
const folder = _app.folder("test/other")
folder.renameTo("new-other")
const folder = _app.folder("test/other")
folder.renameTo("new-other")
folder = _app.folder("test/other")
folder.renameTo("new-other")
folder = _app.folder("test/other")
folder.renameTo("new-other")
val folder = _app.folder("test/other")
folder.renameTo("new-other")
final folder = _app.folder("test/other")
folder.renameTo("new-other")
ファイルへの内容の保存
ファイルへの内容の生成は、output メソッドを通じて行います。このメソッドは OutputStream 型のオブジェクトを提供します。
output にデータを書き込むには、printAndClose メソッドを使用します。このメソッドはファイルに内容を出力し、ファイルを閉じて内容を保存します。
テキストファイルへの書き込み
テキスト内容を持つファイルを作成する例を見てください:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
_app.path("temp").mkdir()
const writer = _app.path("temp/file.txt").output()
writer.printAndClose("ここにテキストを書きます...")
_app.path("temp").mkdir()
const writer = _app.path("temp/file.txt").output()
writer.printAndClose("ここにテキストを書きます...")
_app.path("temp").mkdir()
writer = _app.path("temp/file.txt").output()
writer.printAndClose("ここにテキストを書きます...")
_app.path("temp").mkdir()
writer = _app.path("temp/file.txt").output()
writer.printAndClose("ここにテキストを書きます...")
_app.path("temp").mkdir()
val writer = _app.path("temp/file.txt").output()
writer.printAndClose("ここにテキストを書きます...")
_app.path("temp").mkdir()
final writer = _app.path("temp/file.txt").output()
writer.printAndClose("ここにテキストを書きます...")
outputを使用するたびに新しいファイルが生成されるため、コードを再度実行するとファイルは再作成されます。
JSONファイルへの書き込み
JSON データをファイルに保存する方法を見てください:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
_app.path("temp").mkdir()
const writer = _app.path("temp/customer.json").output()
writer.printAndClose(
_val.map()
.set("name", "山田 花子")
.set(
"records",
_val.list()
.add(1).add(2).add(3)
)
.toJSON()
)
_app.path("temp").mkdir()
const writer = _app.path("temp/customer.json").output()
writer.printAndClose(
_val.map()
.set("name", "山田 花子")
.set(
"records",
_val.list()
.add(1).add(2).add(3)
)
.toJSON()
)
_app.path("temp").mkdir()
writer = _app.path("temp/customer.json").output()
writer.printAndClose(
_val.map()
.set("name", "山田 花子")
.set(
"records",
_val.list()
.add(1).add(2).add(3)
)
.toJSON()
)
_app.path("temp").mkdir()
writer = _app.path("temp/customer.json").output()
writer.printAndClose(
_val.map()
.set("name", "山田 花子")
.set(
"records",
_val.list()
.add(1).add(2).add(3)
)
.toJSON()
)
_app.path("temp").mkdir()
val writer = _app.path("temp/customer.json").output()
writer.printAndClose(
_val.map()
.set("name", "山田 花子")
.set(
"records",
_val.list()
.add(1).add(2).add(3)
)
.toJSON()
)
_app.path("temp").mkdir()
final writer = _app.path("temp/customer.json").output()
writer.printAndClose(
_val.map()
.set("name", "山田 花子")
.set(
"records",
_val.list()
.add(1).add(2).add(3)
)
.toJSON()
)
インデントされた JSON、つまり複数行に整形されタブ区切りされた JSON を生成するには、例えば .toJSON(4) のようにインデントに使用するスペース数を渡します。
詳細は Values の toJSON を参照してください。
ファイルからの内容の読み取り
ファイルの内容の取得は、input メソッドを通じて行います。このメソッドは InputStream 型のオブジェクトを提供します。
input のデータを読み取るには、readAllAndClose メソッドを使用します。このメソッドはファイルの内容の読み取りを処理し、ファイルを閉じます。
テキストファイルの読み取り
ファイルを読み取り、テキスト内容を取得する例を見てください:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
const file = _app.file("temp/file.txt")
const reader = file.input()
_log.info(reader.readAllAndClose())
const file = _app.file("temp/file.txt")
const reader = file.input()
_log.info(reader.readAllAndClose())
file = _app.file("temp/file.txt")
reader = file.input()
_log.info(reader.readAllAndClose())
file = _app.file("temp/file.txt")
reader = file.input()
_log.info(reader.readAllAndClose())
val file = _app.file("temp/file.txt")
val reader = file.input()
_log.info(reader.readAllAndClose())
final file = _app.file("temp/file.txt")
final reader = file.input()
_log.info(reader.readAllAndClose())
JSONファイルの読み取り
ファイルから取得した JSON データを処理する方法を見てください:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
const file = _app.file("temp/file.txt")
const reader = file.input()
const data = _val.fromJSON(reader.readAllAndClose())
_log.info("ファイルのデータ:", data)
const file = _app.file("temp/file.txt")
const reader = file.input()
const data = _val.fromJSON(reader.readAllAndClose())
_log.info("ファイルのデータ:", data)
file = _app.file("temp/file.txt")
reader = file.input()
data = _val.fromJSON(reader.readAllAndClose())
_log.info("ファイルのデータ:", data)
file = _app.file("temp/file.txt")
reader = file.input()
data = _val.fromJSON(reader.readAllAndClose())
_log.info("ファイルのデータ:", data)
val file = _app.file("temp/file.txt")
val reader = file.input()
val data = _val.fromJSON(reader.readAllAndClose())
_log.info("ファイルのデータ:", data)
final file = _app.file("temp/file.txt")
final reader = file.input()
final data = _val.fromJSON(reader.readAllAndClose())
_log.info("ファイルのデータ:", data)
詳細は Val リソースの fromJSON を参照してください。
ストレージの特性
ストレージリソースには、直接使用できるいくつかのメソッドがあります。
例えば、ストレージを通じて次のものにアクセスできます:
つまり、input や output を扱うために file や path を取得する必要はありません。
ストレージ内のテキストファイルへの書き込み
ファイルに対してストレージを開始すると、output メソッドを使用して書き込みを実行できます。このメソッドは、データを処理して書き込むための OutputStream オブジェクトのインスタンスを取得します。
そして OutputStream では、printAndClose メソッドがテキスト(string)をファイルに書き込み、ファイルを閉じます。
次の例を見てください:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
const txtFile = _storage.filesystem("server", "temp", "file.txt")
txtFile.ensurePath()
txtFile.output().printAndClose("ここにテキストを書きます...")
const txtFile = _storage.filesystem("server", "temp", "file.txt")
txtFile.ensurePath()
txtFile.output().printAndClose("ここにテキストを書きます...")
txtFile = _storage.filesystem("server", "temp", "file.txt")
txtFile.ensurePath()
txtFile.output().printAndClose("ここにテキストを書きます...")
txtFile = _storage.filesystem("server", "temp", "file.txt")
txtFile.ensurePath()
txtFile.output().printAndClose("ここにテキストを書きます...")
val txtFile = _storage.filesystem("server", "temp", "file.txt")
txtFile.ensurePath()
txtFile.output().printAndClose("ここにテキストを書きます...")
final txtFile = _storage.filesystem("server", "temp", "file.txt")
txtFile.ensurePath()
txtFile.output().printAndClose("ここにテキストを書きます...")
ストレージ内のテキストファイルの読み取り
ファイルに対してストレージを開始すると、input メソッドを使用して読み取りを実行できます。このメソッドは、データを処理して読み取るための InputStream オブジェクトのインスタンスを取得します。
そして InputStream では、readAllAndClose メソッドがファイル全体を読み取って閉じ、データをテキスト(string)として返します。
次の例を見てください:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
const txtFile = _storage.filesystem("server", "temp", "file.txt")
_log.info(txtFile.input().readAllAndClose())
const txtFile = _storage.filesystem("server", "temp", "file.txt")
_log.info(txtFile.input().readAllAndClose())
txtFile = _storage.filesystem("server", "temp", "file.txt")
_log.info(txtFile.input().readAllAndClose())
txtFile = _storage.filesystem("server", "temp", "file.txt")
_log.info(txtFile.input().readAllAndClose())
val txtFile = _storage.filesystem("server", "temp", "file.txt")
_log.info(txtFile.input().readAllAndClose())
final txtFile = _storage.filesystem("server", "temp", "file.txt")
_log.info(txtFile.input().readAllAndClose())
ストレージ内でのランダムファイルの作成
_storage リソースでは、newRandomFile メソッドを使用してランダムなファイル名を生成できます。
フォルダのパスに対してストレージを開始し、newRandomFile メソッドを実行する際に目的のファイル拡張子を渡します。
このメソッドは、開始フォルダ内で使用するために自動生成されたランダムファイルの新しいストレージインスタンスを返します。
ランダムな名前で拡張子 TXT のファイルを生成する方法を見てみましょう:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
const folder = _storage.filesystem("server", "temp")
const file = folder.newRandomFile("txt")
file.output().printAndClose("ここにテキストを書きます...")
const folder = _storage.filesystem("server", "temp")
const file = folder.newRandomFile("txt")
file.output().printAndClose("ここにテキストを書きます...")
folder = _storage.filesystem("server", "temp")
file = folder.newRandomFile("txt")
file.output().printAndClose("ここにテキストを書きます...")
folder = _storage.filesystem("server", "temp")
file = folder.newRandomFile("txt")
file.output().printAndClose("ここにテキストを書きます...")
val folder = _storage.filesystem("server", "temp")
val file = folder.newRandomFile("txt")
file.output().printAndClose("ここにテキストを書きます...")
final folder = _storage.filesystem("server", "temp")
final file = folder.newRandomFile("txt")
file.output().printAndClose("ここにテキストを書きます...")
まとめ
Netuno のポリグロット低コードフレームワークを使用すると、フォルダとファイルの主要な操作をすべて直接実行できます。
ファイルとフォルダを操作するための専用リソースを使用する場合:
_app- アプリケーション_storage- アプリケーションのストレージ_os- オペレーティングシステム
ベストプラクティスと整理の観点から、ストレージ の使用を優先する必要があります。例外は、限定的で厳密に必要な場合にのみとすべきです。
Netuno はサービスの処理終了時に input と output の自動クローズを処理しますが、ベストプラクティスとして常に明示的に閉じるようにしてください。