ファイル作成
クラスでファイルをローカルに作成するサンプルです。
import android.content.Context;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import android.util.Log;
public class clsFileCreate{
public int fileCreate(Context context, int iResourceId, String sData)
{
String sFileName = "";
clsTemp1 cls = new clsTemp1();
sFileName = cls.getStringXmlData(context, iResourceId);
Log.d("sFileName", sFileName);
cls = null;
//ファイル存在チェック
int iResult = 0;
clsFileExists cls2 = new clsFileExists();
iResult = cls2.FileExists(context, sFileName);
Log.d("FileExists iResult", String.valueOf(iResult));
cls2 = null;
OutputStream stream = null;
OutputStreamWriter writer = null;
try
{
Log.d("openFileOutput", "start");
Log.d("sFileName", sFileName);
if (iResult < 1)
{
//ファイルは存在するので追加で書き込むモードにする
//iFileMode=MODE_APPEND;
//openFileOutputメソッドの前に「context」をつけること
stream = context.openFileOutput(sFileName, context.MODE_APPEND);
Log.d("ファイルモード","MODE_APPEND");
}
else
{
//iFileMode=MODE_PRIVATE;
//stream = openFileOutput(sPath, MODE_PRIVATE);
//openFileOutputメソッドの前に「context」をつけてください。
//ファイル名で実行し、フルパスでは実行しないでください。
stream = context.openFileOutput(sFileName, context.MODE_PRIVATE);
Log.d("ファイルモード","MODE_PRIVATE");
}
Log.d("OutputStreamWriter", "start");
//エンコードを指定したい場合は次のように記述します。
//writer = new OutputStreamWriter(stream,"UTF-8");
//こちらでも動作します。
writer = new OutputStreamWriter(stream);
Log.d("write", "start");
writer.write(sData);
Log.d("write", "end");
Log.d("close", "start");
writer.close();
Log.d("close", "end");
}
catch (Exception e)
{
Log.d("Error Message",e.getMessage().toString());
return 1;
}
finally
{
stream=null;
writer=null;
}
Log.d("fileCreate", "end");
return 0;
}
}
|
クラスの呼び出し側です。
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//ファイル存在チェック
//fileExists();
//ファイル削除
//fileDelete();
//ファイルコピー
//fileCopy();
//ファイル移動
//fileMove();
//ファイル作成
fileCreate();
}
//ファイル作成
private void fileCreate()
{
int iResult = 0;
String sData = "";
sData = "This is a pen.\nIs this a pen?";
Log.d("fileCreate","clsFileCreate instance");
clsFileCreate cls = new clsFileCreate();
Log.d("fileCreate","fileCreate method start");
iResult = cls.fileCreate(this, R.string.png_file_name3, sData);
Log.d("iResult", String.valueOf(iResult));
cls = null;
}
}
|
パスやファイル名を取得しているクラスです。
import android.content.Context;
import android.util.Log;
public class clsTemp1 {
//strings.xmlから指定した文字列を取得します。
//context:Context
//iResourceId:strings.xmlに定義しているリソースId
public String getStringXmlData(Context context, int iResourceId)
{
//strings.xmlからリソースIDを指定して文字列を取得します。
return context.getString(iResourceId);
}
public String getPath(Context context, String sFileName)
{
//ファイルのパス
String sPath = context.getFilesDir().getAbsolutePath() + "/" + sFileName;
Log.d("sPath", sPath);
/*
//ファイルのパス
StringBuffer sPath = new StringBuffer();
sPath.append(context.getFilesDir());
sPath.append("\\");
sPath.append(sFileName);
Log.d("sPath", sPath.toString());
*/
//ex.)
//sPath: /data/data/test.example.com.test23/files/ic_launcher.png
return sPath;
}
}
|
サンプルに使用しているstrings.xmlです。
<resources>
<string name="app_name">test23</string>
<string name="png_file_name">ic_launcher.png</string>
<string name="png_file_name2">ic_launcher2.png</string>
<string name="png_file_name3">ic_launcher3.png</string>
</resources>
|
|
|