プログラム言語 入出力
テキストファイル操作
文字単位
using System.Text;
読込用、既存テキストオブジェクト(文字コードを合わせないと文字化けする)
StreamReader oldsr = new StreamReader(path:"D:\read.txt",encoding:Encoding.GetEncoding("shift-jis"));
書込用、既存テキストオブジェクト(文字コードを合わせないと文字化けする)
StreamWriter newsr = new StreamWriter(path:"D:\write.txt",append:true,encoding:Encoding.GetEncoding("shift-jis"));
読込ファイル全行Loop
while(oldsr.Peek() > 0){
読み込み
string strBuffar = oldsr.ReadLine();
書き込み
newsr.WriteLine(value:strBuffar);
}
oldsr.Close();
newsr.Close();
全行読込
string s = File.ReadAllText(path: @"D:\test.txt", encoding: Encoding.Default);
string s = File.ReadAllText(@"D:\test.txt", Encoding.GetEncoding("Shift_JIS"));
行単位で配列に格納
string[] s = File.ReadAllLines(@"D:\test.txt", Encoding.Default);
全文字列(配列)書込
string s = "test\ntest\n";
File.WriteAllLines(path: @"D:\test.txt", contents: s);
D:\test.txt"の既存の内容は上書きされる
string[] ary =
{
@"test1",
@"test2",
@"test3",
};
File.WriteAllLines(path: @"D:\test.txt", contents: ary);
Imports System.IO
‘読込用、既存テキストオブジェクト(文字コードを合わせないと文字化けする)
Dim oldsr As New StreamReader(path:="D:\read.txt", encoding:=Encoding.GetEncoding("shift_jis"))
‘書込用、既存テキストオブジェクト(文字コードを合わせないと文字化けする)
Dim newsr As New StreamWriter(path:="D:\write.txt", append:=True, encoding:=Encoding.GetEncoding("shift_jis"))
‘読込ファイル全行Loop
Do While oldsr.Peek() > 0
’読き込み
Dim strBuffar As String = oldsr.ReadLine()
’書き込み
Call newsr.WriteLine(value:=strBuffar)
Loop
oldsr.Close()
newsr.Close()
' FileSystemObject
Dim cFso As FileSystemObject
Set cFso = New FileSystemObject
' 存在確認/ファイル削除
If cFso.FileExists("C:\test.txt") Then
cFso.DeleteFile ("C:\test.txt")
End If
' ファイルを作成する
Dim cTextStream As TextStream
Set cTextStream = cFso.CreateTextFile("C:\test.txt")
' 録画開始の合図を書き込み
cTextStream.Write ("START")
' 不要になった時点で参照を解放する (Terminate イベントを早めに起こす)
Set cFso = Nothing
try(
FileWriter writer = new FileWriter(new File("C:\\test.txt"));
FileReader reader = new FileReader(new File("C:\\test.txt"));
){
writer.write("JAVA");
writer.flush();
while((data = reader.read()) != -1){
System.out.println(data);
→ 100 74 97 118 97
System.out.println((char)data);
→ 100 J A V A
}
}catch(Exception ex){
System.out.println(ex.getMessage());
}
int data = 0;
try(
BufferedWriter writer = new BufferedWriter(new FileWriter("C:\\test.txt"));
BufferedReader reader = new BufferedReader(new FileReader("C:\\test.txt"));
文字コード指定読み込み
BufferedReaderreader reader =
new BufferedReader(
new InputStreamReader(
new FileInputStream( new File("C:\\test.txt")),"UTF-8"));
){
writer.write("JAVA\r\n");
writer.write("C#\r\n");
writer.write("PHP\r\n");
writer.flush();
基準設定
reader.mark(256);
System.out.println(reader.readLine());
// → JAVA
System.out.println(reader.readLine());
// → C#
リセット
reader.reset();
System.out.println(reader.readLine());
// → JAVA
N文字スキップ
reader.skip(1);
System.out.println(reader.readLine());
// → #
}catch(Exception ex){
System.out.println(ex.getMessage());
}
<script>
$(function(){
$("#myFile").change(function(evt){
try {
//ファイル名取得
var strPath = $("#myFile").val();
$("#fileNm").text(strPath);
//ファイルオブジェクト取得
var file = evt.target.files;
//FileReaderの作成
var reader = new FileReader();
//テキスト形式で読み込む
reader.readAsText(file[0]);
//読込終了後の処理
reader.onload = function(ev){
//読み込み結果
window.alert(reader.result);
};
}catch(e){
window.alert(e.message);
}
});
});
</script>
$fp = fopen('test.txt', 'r');
while ($line = fgets($fp)) {
print_r($line);
1行をタブ区切りで配列に格納
$wk = explode("\t", $line);
}
fclose($fp);
書き込み(上書き)
$fp = fopen('test.txt', 'w');
fwrite($fp, 'php' . "\n");
fclose($fp);
書き込み(追加)
$fp = fopen('test.txt', 'a');
fwrite($fp, 'php' . "\n");
fclose($fp);
バイト単位
暗号化
using (var stream = new FileStream(path: @"d:\a\test.dat", mode: FileMode.Create))
{
byte[] before = Encoding.UTF8.GetBytes(@"Secret Message");
foreach (var elm in before)
{
stream.WriteByte((byte)elm);
}
}
複合
using (var stream = new FileStream(path: @"d:\a\test.dat", mode: FileMode.Open))
{
byte[] after = new byte[stream.Length];
for (int i = 0; i < after.Length; i++)
{
after[i] = (byte)(stream.ReadByte() ^ 1);
}
string s = Encoding.UTF8.GetString(bytes: after);
}
暗号化
byte[] before = Encoding.UTF8.GetBytes(@"Secret Message");
foreach (var elm in before)
{
File.WriteAllBytes(path: @"d:\a\test.dat", bytes: before);
}
複合
byte[] after = File.ReadAllBytes(path: @"d:\a\test.dat");
for (int i = 0; i < after.Length; i++)
{
after[i] ^= 1;
}
string s = Encoding.UTF8.GetString(bytes: after);
メモリー内データ操作
var stream = new MemoryStream();
using (var writer = new StreamWriter(stream, Encoding.Default))
{
メモリ上にバイト配列を書込
writer.WriteLine(@"aaa");
}
byte[] b = stream.ToArray();
string s = Encoding.Default.GetString(b);
try(
FileOutputStream ostream = new FileOutputStream(new File("C:\\test.txt"));
FileInputStream istream = new FileInputStream(new File("C:\\test.txt"));
){
ostream.write(100);
文字コードを書き込み
ostream.write("Java".getBytes());
while((data = istream.read()) != -1){
System.out.println(data);
}
文字は文字コードで出力される
→ 100 74 97 118 97
}catch(Exception ex){
System.out.println(ex.getMessage());
}finally{
try-with-resources文内で宣言している為不要
ostream.close();
istream.close();
}
int data = 0;
try(
DataOutputStream ostream = new DataOutputStream(new FileOutputStream(new File("C:\\test.txt")));
DataInputStream istream = new DataInputStream(new FileInputStream(new File("V:\\test.txt")));
){
ostream.writeInt(100);
ostream.writeUTF("Java");
System.out.println(istream.readInt());
System.out.println(istream.readUTF());
→ 100 JAVA
}catch(Exception ex){
System.out.println(ex.getMessage());
}
Dim stream As Object
Set stream = CreateObject("ADODB.Stream")
With stream
.Charset = "UTF-8"
.Type = 2
.Open
.WriteText = ~
.SaveToFile ("~.tmp"), 2
.Close
End With
With CreateObject("ADODB.Stream")
.Type = 1
.Open
.LoadFromFile ("~.tmp") ' 一時ファイルをバイナリで読み取る
.Position = 3 ' BOMの3バイトを読み飛ばす
' 4バイト目から目的のファイルにバイナリで書き込む
Dim ws: Set ws = CreateObject("ADODB.Stream")
ws.Type = 1
ws.Open
ws.Write (.Read(-1))
ws.SaveToFile "~", 2
ws.Close
.Close
End With
' 一時ファイルの削除
Call CreateObject("Scripting.FileSystemObject").DeleteFile(tmpFile)
Set stream = Nothing
CSV形式
while (($data = fgetcsv($handle))) {
1列目、4列目を取得
echo($data[0]. $data[3])
}
fclose($handle);
}
標準(画面)入力
s = input()
print(s)
→入力した文字
標準(画面)出力
#include <iostream>
#include <string>
Console::WriteLine("aaa");
→aaa
std::string myStr = "bbb";
std::cout << "ccc" << myStr;
→cccbbb
変数内容出力:型、サイズ情報無し
var_dump(~)
変数内容出力:型、サイズ情報有り
<pre>
var_dump()等
</pre>
変数情報改行
flush();
ob_flush();
画面出力即時反映
s = input()
print(s)
→入力した文字
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
標準出力
System.out.println("input:" + reader.readLine().toString());
改行
echo;
メッセージボックス
DialogResult result = MessageBox.Show(
"メッセージ",
"キャプション",
MessageBoxButtons.YesNoCancel,
MessageBoxIcon.Exclamation,
MessageBoxDefaultButton.Button2);
何が選択されたか調べる
if (result == DialogResult.Yes)
{
~
}
else if (result == DialogResult.No)
{
~
}
else if (result == DialogResult.Cancel)
{
~
}
常に最前面に表示する
MessageBox.Show(
メッセージ,
キャプション,
MessageBoxButtons.OK,
MessageBoxIcon.Information,
MessageBoxDefaultButton.Button1,
MessageBoxOptions.DefaultDesktopOnly);
Call MsgBox("メッセージ", vbOKOnly)
Call MsgBox("メッセージ", vbOKOnly, "タイトル")
Call MsgBox("メッセージ", vbOKOnly Or vbInformation, "タイトル")
Dim Ret As Long
Ret = MsgBox("メッセージ", vbYesNoCancel + vbQuestion, "タイトル")
If Ret = vbYes Then
~
ElseIf Ret = vbNo Then
~
ElseIf Ret = vbCancel Then
~
EndIf
【ボタン種類】
[OK]
vbOKOnly(0)
[OK]/[キャンセル]
vbOKCancel(1)
[中止]/[再試行]/[無視]
vbAbortRetryIgnore(2)
[はい]/[いいえ]/[キャンセル]
vbYesNoCancel(3)
[はい]/[いいえ]
vbYesNo(4)
[再試行]/[キャンセル]
vbRetryCancel(5)
【アイコン】
警告メッセージ アイコン
vbCritical(16)
問い合わせメッセージ アイコン
vbQuestion(32)
注意メッセージ アイコン
vbExclamation(48)
情報メッセージ アイコン
vbInformation(64)
モーダル設定
メッセージボックスに応答するまで、呼び出し元のアプリケーションは実行不可
vbApplicationModal(0)
モーダル設定
メッセージボックスに応答するまで、全てのアプリケーションが実行不可
vbSystemModal(4096)
最前面表示
VbMsgBoxSetForeground(65536)
【その他】
ヘルプボタン
vbMsgBoxHelpButton(16384)
第1ボタンを標準ボタン設定(既定値)
vbDefaultButton1(0)
第2ボタンを標準ボタン設定
vbDefaultButton2(256)
第3ボタンを標準ボタン設定
vbDefaultButton3(512)
第4ボタンを標準ボタン設定
vbDefaultButton4(768)
【戻り値】
vbOK(1)[OK]
vbCancel(2)[キャンセル]
vbAbort(3)[中止]
vbRetry(4)[再試行]
vbIgnore(5)[無視]
vbYes(6)[はい]
vbNo(7)[いいえ]
if ( window.confirm('~です。よろしいですか?') ) {
YESの時の処理
}
【カスタマイズ】
※親ウィンドウ.html
<script type="text/javascript">
var url = "Child.html";
var options =
"dialogWidth=300px; dialogHeight=300px;" +
"center=1; status=1; scroll=1;" +
"resizable=1; minimize=0; maximize=0;";
var args = new Array('AAA','BBB');
var ret = window.showModalDialog(url, args, options);
if (ret){
document.write(ret + '<br/>');
}else{
document.write('無し<br/>');
}
</script>
※子ウィンドウ.html
<script type="text/javascript">
onload = function () {
// showModalDialogの第二引数を取得
var elm = new Array();
Array[0] = window.dialogArguments[0];
Array[1] = window.dialogArguments[1];
window.alert(Array[0]);
window.alert(Array[1]);
}
function fnClick()
{
// showModalDialogの戻り値を設定
window.returnValue = document.getElementById('myText').value;
window.close();
}
</script>
<input type="text" value="値入力" id="myText" /><br/>
<input type="button" value="OK" onclick="fnClick()" /><br />
ログ出力
メール
error_log('文字列' . '\r\n', 3, "test.log");
ファイル名を指定
改行コード必要
Log::emergency(〜);
Log::alert(〜);
Log::critical(〜);
Log::error(〜);
Log::warning(〜);
Log::notice(〜);
Log::info(〜);
Log::debug(〜)
ログファイル設定
※.env
LOG_CHANNEL=daily
LOG_LEVEL=debug
※/config/logging.php
'default' => env('LOG_CHANNEL', 'stack'),
'channels' => [
'stack' => [
'driver' => 'stack',
'channels' => ['single'],
'ignore_exceptions' => false,
],
〜
]
※簡易
logger(〜);
/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php
function logger($message = null, array $context = [])
{
if (is_null($message)) {
return app('log');
}
return app('log')->debug($message, $context);
}
$this->log('文字列');
DB
$resut = ~->find();
$this->log(print_r($result, true));
log_message('error', $data);
log_message('error', json_encode($data));
ログレベル設定
log.basicConfig(level=log.~, format=~, filename=~)
log.basicConfig(level=log.DEBUG, format='%(asctime)s %(levelname)s %(message)s', filename='error.log')
log.basicConfig(level=log.INFO, format=~, filename=~)
log.basicConfig(level=log.WARNING, format=~, filename=~)
log.basicConfig(level=log.ERROR, format=~, filename=~)
log.basicConfig(level=log.CRITICAL, format=~, filename=~)
ログ出力
log.debug('aaaaa')
log.info('aaaaa')
log.warning('aaaaa')
log.error('aaaaa')
log.critical('aaaaa')
2019-09-13 07:16:08,803 DEBUG aaaaa
ログ出力停止
log.disable(log.DEBUG)
この命令以降のDEBUGレベルのログ出力命令は無効かされる
設定ファイル
id=php
name=cakephp3
配列
[framework]
PHP=CakePHP
JAVA=Spring
C#=.NetFramework
※~.php
$config = parse_ini_file('setting.config');
$config = parse_ini_file('setting.config', false);
$id = $config['id'];
→php
$name = $config['name'];
→cakephp3
配列
$config = parse_ini_file('setting.config', true);
$framework = $config['framework'];
forearch ($framework as $key => $value) {
print $key;
→PHP/JAVA/C#
print $value;
→CakePHP/Spring/.NetFramework
}
※config\bootstrap.php
define("Cake1","定数");
Configure::write("Cake2", "定数");
Configure::write("Cake3", ["0"=>"php","1"=>"java"]);
Configure::write("Cake4", ["php"=>"CakePHP3","java"=>"Spring"]);
コントローラでの変数呼び出し
use Cake\Core\Configure;
$cake1 = Cake1;
$cake2 = Configure::read("Cake2");
$cake3 = Configure::read("Cake3");
$cake4 = Configure::read("Cake4");
→$cake1:定数
→$cake2:定数
→$cake3[1]:java
→$cake4['php']:CakePHP3
【別ファイルへの変数定義】
※config\const.php
<?php
use Cake\Core\Configure;
return [
「,」で区切る
define("Cake1","定数"),
Configure::write("Cake2", "定数"),
Configure::write("Cake3", ["0"=>"php","1"=>"java"]),
Configure::write("Cake4", ["php"=>"CakePHP3","java"=>"Spring"]),
];
※config\bootstrap.php
// 定数ファイル(const.php)読み込み
Configure::load("const");
コントローラでの変数呼び出し
「bootstrap.phpへの変数定義」と同じ
クリップボード
クリップボードにコピー
clip.copy('python')
クリップボードから貼り付け
text = clip.paste()
print(text)
→python