検索
ホームページバックエンド開発PHPチュートリアル嘉庚学院ファイルシステム教育基本ファイルシステム操作クラス

コードをコピーします コードは次のとおりです:


error_reporting(2047);
/*
* Class IO (SNakeVil Completed 03.25.04) (v1.0.0.0)
*
* [説明]
* このクラスはファイルシステム取引に使用されますと。
*
* [関数]
* **** list_dir($dir_path);
* 指定されたディレクトリの内容を読み取り、その内容の配列を返します。
* $dir_path 文字列、ディレクトリパスを指定します
* エラーがある場合は FALSE を返し、そうでない場合は返します
* array(
* "count"=>array("files","dirs","size"),
* " list"=>array(
* array("name","locate","type","size","last_access","last_change","last_modify"),
* ..... .
* )
* )
* ********
* ********
* **** Seek_file($pattern, $dir_path, $seek_type, $sub_dir, $internal, $limit) ;
* 正規表現条件に基づいて、指定されたレベルの対応するディレクトリおよびサブディレクトリ内で一致するファイルとディレクトリを検索します。
* $pattern は PERL 互換性標準に準拠した正規表現です。// を追加する必要はありません。システムが自動的に追加します
* $seek_type には 3 つの可能な値があります -1 0 1、0 はフォルダーのみ、1 はファイルのみ, -1 には両方が含まれます
* $sub_dir 数値、検索されるサブディレクトリの深さ、指定されたディレクトリはカウントされません、5 を超えないようにすることをお勧めします
* $internal ブール値、true の場合、検索結果の詳細情報それ以外の場合は、ファイル名、タイプ、ディレクトリのみが返されます
* $limit システム リソースの過剰な浪費を避けるための数値、検索結果の制限
* エラーがある場合は FALSE を返し、それ以外の場合は
* 配列を返します(
* array(
* "name","locate","type"
* [, "size","last_access","last_change","last_modify"]
* ),
* ......
* )
* ********
* ******* *
* **** delete($path)
* 指定されたオブジェクト、ファイル、またはフォルダーを削除します (空でないものも含む)。サブディレクトリとファイルを含むフォルダー。
* $path 文字列、削除するコンテンツ パス (ファイルまたはディレクトリ) を指定します
* エラーがあり、エラーで中断された場合は FALSE を返し、それ以外の場合は TRUE を返します
* ********
* *** *****
* **** make_dir($path);
* 相対パスまたは絶対パス、または詳細な作成で任意のフォルダーを作成します。
* $path 文字列、作成される最終ディレクトリ パス
* エラーがある場合は FALSE を返し、それ以外の場合は TRUE を返します
* ********
* ********
* ** ** verify_file($src, $dst, $internal);
* MD5 アルゴリズムを使用して、2 つのファイルが同じかどうかを比較します。
* $src 文字列、ソース ファイル パス
* $dst 文字列、ターゲット ファイル パス
* $internal ブール値、1M を超えるファイルの場合、MD5 検証手順を保存し、サーバーの負担を軽減するために FALSE に設定できます。
* 利用可能な場合はエラー時に FALSE を返し、それ以外の場合は TRUE を返します
* ********
* ********
* **** copy($src_path, $dst_path);任意のフォルダーまたはファイル 相対パスまたは絶対パスを使用してコピーを実行できます。ファイルがコピーされた後、エラーやデータ エラーがないかどうかが確認されます。
* $src_path 文字列、コピーするソース コンテンツ パス (ファイルまたはディレクトリ) を指定します。
* $dst_path 文字列、コピーするターゲット コンテンツ パス (ファイルまたはディレクトリ) を指定します。性質は $src_path によって決まります。 $ src_path の下位ディレクトリにすることができます
* エラーがある場合は FALSE を返し、そうでない場合は TRUE を返します
* ********
* ********
* **** move($ src_path, $dst_path);
* 相対パスまたは絶対パスでフォルダーまたはファイルを移動します。ファイルの移動が完了すると、エラーやデータ エラーがないかどうかが確認されます。
* $src_path 文字列、移動するソース コンテンツのパス (ファイルまたはディレクトリ) を指定します。
* $dst_path 文字列、移動するターゲット コンテンツのパス (ファイルまたはディレクトリ) を指定します。性質は次によって決まります。 $src_path、$ src_path の下位ディレクトリにすることができます
* エラーがある場合は FALSE を返し、それ以外の場合は TRUE を返します
*
* [著作権]
* Fengyu Mingqing (SNakeVil@51js、SNakeVil@BU) が独自に設計し完成させたもの、すべての権利予約済み。
* ご自由にお使いください。ただし、以下のテキストは保存しないでください。よろしくお願いします。 
*
* ===========Z=================
* Class.IO.v1.0.0.0.build040325
* 用。 PHP.v4.20+
* by SNakeVil
* (snakevil@51js, snakevil@BU)
* --------+------
* QQ:118824
* MSN:snakevil_@hotmail .com
* HP:http://www.snakevil.com/ 
* ===========Z=================
*
*/
class IO {
var $error_id; 
var $result; 
var $error_関連; 
var $last_exist_dir; 
function IO() {
$this->result = array(); 
$this->error_id = 0x0000; 
$this->エラー関連 = ""; 
$this->last_exist_dir = ""; 
$this を返す; 
}
function error_occur($error_id=0xffff,$error_popular="") { // ----0xffff---- 発行错误,但错误原因不明
if (is_int($error_id)) $this-> error_id = $error_id; // 获取错误号
$this->error_popular = $error_popular; 
false を返します。 // 错误発行時返し FALSE 方便进一步处処理
}
function list_dir($dir_path=".") {
if (!is_dir($dir_path)) return $this->error_occur(0x0001, $dir_path); // ----0x0001---- 指定目录不存在
if (!$dir_handle=@opendir($dir_path)) return $this->error_occur(0x0002, $dir_path); // ----0x0002---- 指定目录無权读取
$result = array(
"count" => array("files" => 0, "dirs" =>0, "size " => 0),
"list" => array()
); 
while (false!==($file_handle=readdir($dir_handle))) { // 使用 !== 防止処理名が 0 または FALSE の文書、目录
if ($file_handle=="."||$file_handle =="..") 続行します。 // 忽略系特定の 2 つの文件夹
$temp = str_replace("", "/", realpath($dir_path)); 
$temp = substr($temp, -1)=="/" ? $temp : $temp."/"; 
$temp = array($temp, $file_handle); 
$file_handle = $temp[0].$temp[1]; // 获取绝对地址
$temp = array(
"name" => $temp[1],
"locate" => $temp[0],
"type" => @filetype($file_handle) ,
"size" =>filesize($file_handle),
"last_access" => filemtime($file_handle),
"last_change" =>ファイルハンドル)
); 
switch ($temp["type"]) {
case "file":
$temp["type"] = 1; 
$result["カウント"]["ファイル"]++; 
$result["count"]["size"] += $temp["size"]; 
休憩; 
case "dir":
$temp["type"] = 0; 
$result["count"]["dirs"]++; 
休憩; 
デフォルト: // !!!! Win32 平台に属し、非文件も非目录の内容忽略
$temp["type"] = -1; 
}
$result["list"][] = $temp; 
}
closedir($dir_handle); 
unset($dir_handle, $file_handle, $temp); 
clearstatcache(); // 清除文件系统缓存
return $this->result = $result; 
}
function look_file($pattern=".*",$dir_path=".",$seek_type=1,$sub_dir=0,$internal=false,$limit=100) {
/* 考えられるすべてのパラメータ値を標準化します* /
$pattern = "/".$pattern."/";
$seek_type = intval($seek_type)
$seek_type>0 1 : ($seek_type $sub_dir = abs(intval($sub_dir));
$internal = (bool)$internal;
if ($limit==0) $limit = 100;
$sub_dir_list = array(array($dir_path)); // クエリ ディレクトリをサブディレクトリ階層の最初のレベルとして扱います
$result = array();
/* i 現在処理されているサブディレクトリ レベル、0 は指定されたディレクトリですつまり、1 つのディレクトリのみを処理します */
for ($i=0;$iif (!isset($sub_dir_list[$i])) return $this-> result = $result; // 特定のレベルのサブディレクトリが設定されていない場合は、実際のディレクトリ システムにディレクトリが存在しないことを意味し、各サブディレクトリ レベルの k 個のサブディレクトリ統計、j の現在の処理シーケンス番号を返します */
for ($j= 0,$k=count($sub_dir_list[$i]);$j$l = $this->gt ;list_dir($sub_dir_list[$ i][$j]);
if (!$l) return $this->result = $result; // エラーが発生した場合は、既存の結果を返すのを直ちに停止します
$l = $l["list"];
/* n 各サブディレクトリ内のファイル、ディレクトリ、およびその他の項目の統計。m は現在の処理シーケンス番号 */
for ($m=0,$n=count($l) ;$mif (count($result)>=$limit) return $this->result = $result; // 必要な数に達した場合は、 return
if ( $l[$m]["タイプ"]= =0) $sub_dir_list[$i+1][] = $l[$m]["検索"].$l[$m]["名前"]; // 次のレベルのサブディレクトリ情報を収集します
$o = $l[$m]["type"];
if ($o!=$seek_type&&($seek_type==1||$seek_type==0)) continue; // 要件を満たさない項目を無視します
elseif ( $o==-1&&$seek_type==-1) continue
if (!preg_match($pattern, $l[$m]["name"])) continue; // 正規表現に一致しない項目を無視します
$result[] = $internal ? $l[$m] : array("name" => $l[$m]["name"], " locate" => $l[$m]["locate "], "type" => $l[$m]["type"]);
}
}
}
unset($i, $j , $k, $l, $m, $n, $o, $sub_dir_list);
return $this->result = $result
}
function delete($path="") {
if (!file_exists; ($path)) return $this->error_occur(0x0003 , $path); // ----0x0003---- 指定されたオブジェクトは存在しません
if (is_dir($path)) {
$path = str_replace("", "/", realpath($path));
$path = substr($path, -1)=="/" $path : $path."/" ?
$sub_list = array( array($path));
for ($i=0;$ iif (!isset($sub_list[$i])) Break; // 最後まで進み、ファイルを削除した後にディレクトリを削除しやすくするために、ディレクトリ内のすべてのサブディレクトリのリストを取得します
for ($j=0, $k=count($sub_list[$i]);$j$l = $this->list_dir($sub_list[$i][$j]);
if (! $l) return $this->error_occur("", $sub_list[$i][$j ]);
$l = $l["list"]; ($l);$m$o = $l[$ m]["場所を特定"].$l[$m]["名前"];
if ($l[$ m]["type"]==0) $sub_list[$i+1][] = $ o;
elseif (!@unlink($o)) return $this->error_occur(0x0004, $o); // ディレクトリ内のすべてのファイルを削除します
}
}
}
for($i=count( $sub_list)-1;$i>=0;$i--) // ディレクトリの削除を逆にします
for ($j =0,$k=count($sub_list[$i]);$jif (!@rmdir($sub_list[$i][$j ])) return $this->error_occur(0x0005, $sub_list[$i][$ j]); // ----0x0005---- ディレクトリには
unset($i, $) を削除する権限がありませんj、$k、$l、$m、$n、$o、$sub_list);
true を返す
}elseif (@unlink($path)) return true;
else return $this->error_occur(0x0004, $path); // ----0x0004---- ファイルには削除する権限がありません
}
function generate_realpath($ path="") {
if ($path==""||!is_string($path)) return $this->error_occur(0x0007, $path); // ----0x0007-- -- パス パラメーター エラー
$path = preg_replace("/(?|]/", "", str_replace("", "/", $path) ); // パス内の複数の可能なシンボルを標準化します
if (substr($path,1,1)==":") return $path !!!! Win32 プラットフォームの絶対パス
elseif; path, 0,1)=="/") return substr(realpath("."), 0, 2).$path !!!! Win32 プラットフォームでの絶対パス変換
else {
if (substr( $ path,-1)=="/") $path = substr($path,0,-1); // 末尾の / 記号を消去します
$path = preg_replace("//{2,}/", " /", $path); // /// 接続された同様のシンボルを 1 つに簡略化します
$path =explode("/", $path); // パスを分割します
$cur_path =explode("/", str_replace (" ", "/", realpath(".")));
for ($i=0,$j=count($path);$iif ($path[ $i ]=="..") array_pop($cur_path);
elseif ($path[$i]=="."||$path[$i]==str_repeat(".", strlen($path [$ i]))) continue; // 無駄な相対パス アドレスを無視します。
else array_push($cur_path, $path[$i]);
$path = implode("/" , $ cur_path);
unset($cur_path);
return $path;
}
関数 make_dir($path="") {
if (!$path=$this->generate_realpath($path)) ;
$path =explode("/", $path);
$i = array($path[0]);
for ($i=0,$j=count($path),$k= array( ),$l="";$iarray_push($k, $path[$i]);
$l = implode("/", $k); file_exists($l)) {
if ($this->last_exist_dir=="") $this->last_exist_dir = $l;
if (!@mkdir($l)) return $this->occur( 0x0008, $l); // ----0x0008---- ディレクトリを作成できません
}
}
return true
}
function verify_file($src="",$dst="",$internal = true) {
if (!file_exists($src)||!is_file($src)) return $this->error_occur(0x000A, $src); // ----0x000A---- 指定されたオブジェクトはファイルではありません
if (!file_exists($dst)||!is_file($dst)) return $this->error_occur(0x000A, $dst);
$i = filesize($src); = filesize($dst)) {
unset($i);
return false;
if ($i>1024*1024*1024&&!$interal) { // 1MB を超えるファイルの場合、正確なチェックが行われない場合必須、スキップ
unset($i);
return true;
if (md5_file($src)!=md5_file($dst)) return true; 
function copy($src_path="",$dst_path="") {
if (!file_exists($src_path)) return $this->error_occur(0x0003, $src_path); 
if (!$dst_path=$this->generate_realpath($dst_path)) false を返します。 
if (is_dir($src_path)) {
$this->last_exist_dir = ""; // 记录现行实际存在する目录
if (!$this->make_dir($dst_path)) return false; // 建立目录失败
$src_path = str_replace("", "/", realpath($src_path)); 
$src_path = substr($src_path, -1)=="/" ? $src_path : $src_path."/"; 
$sub_list = array(array($src_path)); 
for($i=0;$iif (!isset($sub_list[$i])) break; 
for ($j=0,$k=count($sub_list[$i]);$j$l = $this->list_dir($sub_list[$i][$ j]); 
if (!$l) return $this->error_occur(0x0003, $sub_list[$i][$j]); 
$l = $l["リスト"]; 
for ($m=0,$n=count($l);$m$o = $l[$m]["検索"].$l[$m][ "名前"]; 
if ($o==$this->last_exist_dir) 続行; // 結果が上级目录方向下级目录复制、死循環防止
$p = str_replace(substr($src_path, 0, -1), $dst_path, $o); 
if ($l[$m]["type"]==0) {
$sub_list[$i+1][] = $o; 
if (!$this->make_dir($p)) return false; // 对每一个子目录都予以建立
} else { // 对每一个文件进行复制
if ($this->verify_file($o, $p)) Continue; // 如果目标とソース完全同一,不再复制
if (!copy($o,$p)||!$this->verify_file($o,$p)) return $this->error_occur(0x0009 、$o); // ----0x0009---- 文件移動失败
}
}
}
}
unset($i, $j, $k, $l, $m, $n, $o, $p, $サブリスト); 
true を返します。 
} else {
if (!is_readable($src_path)) return $this->error_occur(0x0006, $src_path); // ----0x0006---- 源文件無权读取
if ($this->verify_file($src_path,$dst_path)) return true; 
$i = strrpos($dst_path, "/"); 
$dst_path = array(substr($dst_path, 0, $i), substr($dst_path, $i+1)); 
設定を解除($i); 
if (!$this->make_dir($dst_path[0])) return false; 
$dst_path = implode("/", $dst_path); 
if (!copy($src_path,$dst_path)||!$this->verify_file($src_path,$dst_path)) return $this->error_occur(0x0009, $src_path); 
true を返します。 
}
}
function move($src_path="",$dst_path="") {
if (!file_exists($src_path)) return $this->error_occur(0x0003, $src_path); 
if (!$dst_path=$this->generate_realpath($dst_path)) false を返します。 
if (is_dir($src_path)) {
$this->last_exist_dir = ""; 
if (!$this->make_dir($dst_path)) return false; 
$src_path = str_replace("", "/", realpath($src_path)); 
$src_path = substr($src_path, -1)=="/" ? $src_path : $src_path."/"; 
$sub_list = array(array($src_path)); 
for($i=0;$iif (!isset($sub_list[$i])) break; 
for ($j=0,$k=count($sub_list[$i]);$j$l = $this->list_dir($sub_list[$i][$ j]); 
if (!$l) return $this->error_occur(0x0003, $sub_list[$i][$j]); 
$l = $l["リスト"]; 
for ($m=0,$n=count($l);$m$o = $l[$m]["検索"].$l[$m][ "名前"]; 
if ($o==$this->last_exist_dir) 続行; 
$p = str_replace(substr($src_path, 0, -1), $dst_path, $o); 
if ($l[$m]["type"]==0) {
$sub_list[$i+1][] = $o; 
if (!$this->make_dir($p)) return false; 
} else {
if ($this->verify_file($o, $p)) 続行; 
if (!copy($o,$p)||!$this->verify_file($o,$p)) return $this->error_occur(0x0009, $o); 
if (!@unlink($o)) return $this->error_occur(0x0004, $o); 
}
}
}
}
for($i=count($sub_list)-1;$i>=0;$i--)
for($j=0,$k=count($sub_list[$ i]);$jif (strpos($this->last_exist_dir,$sub_list[$i][$j])!==false) 続行; // 对移動目标目录の上層目录,不予虑删除
elseif (!@rmdir($sub_list[$i][$j])) return $this->error_occur(0x0005, $sub_list[$i][ $j]); 
unset($i, $j, $k, $l, $m, $n, $o, $p, $sub_list); 
true を返します。 
} else {
if (!is_readable($src_path)) return $this->error_occur(0x0006, $src_path); 
if ($this->verify_file($src_path,$dst_path)) true を返します。 
$i = strrpos($dst_path, "/"); 
$dst_path = array(substr($dst_path, 0, $i), substr($dst_path, $i+1)); 
設定を解除($i); 
if (!$this->make_dir($dst_path[0])) return false; 
$dst_path = implode("/", $dst_path); 
if (!copy($src_path,$dst_path)||!$this->verify_file($src_path,$dst_path)) return $this->error_occur(0x0009, $src_path); 
if (@unlink($src_path)) true を返します。 
else return $this->error_occur(0x0004, $src_path); 
}
}
}
?>

以上は、嘉庚学院教育文書システムのファイル システムの基本的な操作タイプを紹介しており、嘉庚学院教育文書システムに関する内容が含まれており、PHP 教育に関心のある友人の助けになることを望みます。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
PHP対Python:違いを理解しますPHP対Python:違いを理解しますApr 11, 2025 am 12:15 AM

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHPは、シンプルな構文と高い実行効率を備えたWeb開発に適しています。 2。Pythonは、簡潔な構文とリッチライブラリを備えたデータサイエンスと機械学習に適しています。

PHP:それは死にかけていますか、それとも単に適応していますか?PHP:それは死にかけていますか、それとも単に適応していますか?Apr 11, 2025 am 12:13 AM

PHPは死にかけていませんが、常に適応して進化しています。 1)PHPは、1994年以来、新しいテクノロジーの傾向に適応するために複数のバージョンの反復を受けています。 2)現在、電子商取引、コンテンツ管理システム、その他の分野で広く使用されています。 3)PHP8は、パフォーマンスと近代化を改善するために、JITコンパイラおよびその他の機能を導入します。 4)Opcacheを使用してPSR-12標準に従って、パフォーマンスとコードの品質を最適化します。

PHPの未来:適応と革新PHPの未来:適応と革新Apr 11, 2025 am 12:01 AM

PHPの将来は、新しいテクノロジーの傾向に適応し、革新的な機能を導入することで達成されます。1)クラウドコンピューティング、コンテナ化、マイクロサービスアーキテクチャに適応し、DockerとKubernetesをサポートします。 2)パフォーマンスとデータ処理の効率を改善するために、JITコンパイラと列挙タイプを導入します。 3)パフォーマンスを継続的に最適化し、ベストプラクティスを促進します。

PHPの抽象クラスまたはインターフェイスに対して、いつ特性を使用しますか?PHPの抽象クラスまたはインターフェイスに対して、いつ特性を使用しますか?Apr 10, 2025 am 09:39 AM

PHPでは、特性は方法が必要な状況に適していますが、継承には適していません。 1)特性により、クラスの多重化方法が複数の継承の複雑さを回避できます。 2)特性を使用する場合、メソッドの競合に注意を払う必要があります。メソッドの競合は、代替およびキーワードとして解決できます。 3)パフォーマンスを最適化し、コードメンテナビリティを改善するために、特性の過剰使用を避け、その単一の責任を維持する必要があります。

依存関係噴射コンテナ(DIC)とは何ですか?また、なぜPHPで使用するのですか?依存関係噴射コンテナ(DIC)とは何ですか?また、なぜPHPで使用するのですか?Apr 10, 2025 am 09:38 AM

依存関係噴射コンテナ(DIC)は、PHPプロジェクトで使用するオブジェクト依存関係を管理および提供するツールです。 DICの主な利点には、次のものが含まれます。1。デカップリング、コンポーネントの独立したもの、およびコードの保守とテストが簡単です。 2。柔軟性、依存関係を交換または変更しやすい。 3.テスト可能性、単体テストのために模擬オブジェクトを注入するのに便利です。

通常のPHPアレイと比較して、SPL SPLFIXEDARRAYとそのパフォーマンス特性を説明してください。通常のPHPアレイと比較して、SPL SPLFIXEDARRAYとそのパフォーマンス特性を説明してください。Apr 10, 2025 am 09:37 AM

SplfixedArrayは、PHPの固定サイズの配列であり、高性能と低いメモリの使用が必要なシナリオに適しています。 1)動的調整によって引き起こされるオーバーヘッドを回避するために、作成時にサイズを指定する必要があります。 2)C言語アレイに基づいて、メモリと高速アクセス速度を直接動作させます。 3)大規模なデータ処理とメモリに敏感な環境に適していますが、サイズが固定されているため、注意して使用する必要があります。

PHPは、ファイルを安全に処理する方法をどのように処理しますか?PHPは、ファイルを安全に処理する方法をどのように処理しますか?Apr 10, 2025 am 09:37 AM

PHPは、$ \ _ファイル変数を介してファイルのアップロードを処理します。セキュリティを確保するための方法には次のものが含まれます。1。アップロードエラー、2。ファイルの種類とサイズを確認する、3。ファイル上書きを防ぐ、4。ファイルを永続的なストレージの場所に移動します。

Null Coulescingオペレーター(??)およびNull Coulescing Assignment Operator(?? =)とは何ですか?Null Coulescingオペレーター(??)およびNull Coulescing Assignment Operator(?? =)とは何ですか?Apr 10, 2025 am 09:33 AM

JavaScriptでは、nullcoalescingoperator(??)およびnullcoalescingsignmentoperator(?? =)を使用できます。 1.??最初の非潜水金または非未定されたオペランドを返します。 2.??これらの演算子は、コードロジックを簡素化し、読みやすさとパフォーマンスを向上させます。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!