[解決済み] ディレクトリが存在しない場合は作成し、そのディレクトリにファイルも作成します。
質問
条件は、ディレクトリが存在する場合、新しいディレクトリを作成することなく、その特定のディレクトリにファイルを作成する必要があります。
以下のコードでは、新しいディレクトリにファイルを作成するだけで、既存のディレクトリには作成されません。例えば、ディレクトリ名は "GETDIRECTION"のようなものです。
String PATH = "/remote/dir/server/";
String fileName = PATH.append(id).concat(getTimeStamp()).append(".txt");
String directoryName = PATH.append(this.getClassName());
File file = new File(String.valueOf(fileName));
File directory = new File(String.valueOf(directoryName));
if (!directory.exists()) {
directory.mkdir();
if (!file.exists() && !checkEnoughDiskSpace()) {
file.getParentFile().mkdir();
file.createNewFile();
}
}
FileWriter fw = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
bw.write(value);
bw.close();
解決方法は?
このコードでは、まずディレクトリの存在を確認し、なければ作成し、その後にファイルを作成します。私はあなたの完全なコードを持っていないので、あなたのメソッドコールのいくつかを確認できなかったことに注意してください。
getTimeStamp()
と
getClassName()
が動作します。また、可能な限り
IOException
のいずれかを使用したときにスローされる可能性があります。
java.io.*
ファイルを書き込む関数がこの例外を投げる (そしてそれは別の場所で処理される) ようにするか、メソッド内で直接処理する必要があります。また、私が想定していたのは
id
は、型
String
- あなたのコードでは明示的に定義されていないのでわかりません。もし、それが
int
にキャストする必要があります。
String
のように、fileNameで使用する前に、このようにします。
また
append
の呼び出しを
concat
または
+
を、適当に見繕った。
public void writeFile(String value){
String PATH = "/remote/dir/server/";
String directoryName = PATH.concat(this.getClassName());
String fileName = id + getTimeStamp() + ".txt";
File directory = new File(directoryName);
if (! directory.exists()){
directory.mkdir();
// If you require it to make the entire directory path including parents,
// use directory.mkdirs(); here instead.
}
File file = new File(directoryName + "/" + fileName);
try{
FileWriter fw = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
bw.write(value);
bw.close();
}
catch (IOException e){
e.printStackTrace();
System.exit(-1);
}
}
Microsoft Windows上でコードを実行したい場合は、このようなベアパス名は使わない方が良いでしょう。
/
をファイル名として使用します。完全な移植性を得るには、おそらく次のようなものを使うべきでしょう。
ファイル.セパレータ
を使用してパスを構築します。
編集
: のコメントによると
ヨーゼフスクリプト
の下にあるように、ディレクトリの存在をテストする必要はないのです。その
directory.mkdir()
の呼び出しは
true
はディレクトリを作成した場合、そして
false
は、ディレクトリがすでに存在する場合も含めて、そうでない場合は
関連
-
[解決済み] 未処理の例外タイプIOException」が表示されるのですが?
-
[解決済み] HashMapのtoString関数はなぜ異なる順序で自分自身を印刷するのですか?
-
[解決済み] ストリングビルダー.イコール Java
-
[解決済み] XX:MaxDirectMemorySizeの既定値
-
[解決済み] Oracle DB : java.sql.SQLException: 閉じた接続
-
[解決済み] Javaでのスキャナが動作しない
-
[解決済み] 最も近い整数への切り捨て - 私は不正をしているのでしょうか、それともこれは十分すぎるほど適切なのでしょうか?
-
[解決済み] ファイルを作成せずに、ファイルが存在するかどうかをチェックする
-
[解決済み] Java の assert キーワードは何をするのか、そしていつ使うべきなのか?
-
[解決済み】ディレクトリ内のすべてのファイルを削除する(ただし、ディレクトリは削除しない) - ワンライナー解決法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] java.sql.SQLException: ORA-00933: SQL コマンドが正しく終了していません。
-
[解決済み] Java の substring() の時間複雑性
-
[解決済み] Java Genericメソッドをstaticにするには?
-
[解決済み] Java Swingで複数のボタンに対して複数のActionListenersを追加する方法
-
[解決済み] javax.naming.NameNotFoundException
-
[解決済み] ファイルを作成せずに、ファイルが存在するかどうかをチェックする
-
[解決済み] Apache Camelのログに簡単なテキストを記録する
-
[解決済み] どのように配列の10未満の値(x * 2)を倍増するコードを取得するには?(Java)
-
[解決済み] Java- <T extends Comparable<T>>の意味?
-
[解決済み] アニメーションGIFの表示