質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.52%

  • Java

    13786questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • ファイルI/O

    38questions

    ファイルI/Oは、コンピューターにおけるファイルの入出力です。これは生成/削除やファイルを読み込んだり、出力をファイルに書き込むようなディレクトリやファイルの運用を含みます。

Javaでディレクトリの作成ができません……

解決済

回答 6

投稿

  • 評価
  • クリップ 0
  • VIEW 1,253

serona

score 17

前提・実現したいこと

いつもお世話になっています。

独学で勉強している初心者です。 
JavaFXでGUIプログラミングをやりたくて、 
開発環境はeclipceを使用してます。 

私は、MacOS XとWindows7のパソコンを持っており
プログラムはMacOS Xの方で作成しました。

一先ず完成したので、プロジェクトの「エクスポート」で「JARファイル」を作成し、
Windowsのパソコンに作成したjarファイルを移動、
以下のページの(1)を参考に、起動しています。
http://tamori.3zoku.com/misc/java/java_run.html

結果、ほとんどは問題なく動作したのですが
ディレクトリの作成がどうも上手く行かないのです。

Cドライブの中に「test」というフォルダを作成し、さらにその中に「test2」というフォルダを作成したいです。
(実際には別の名前がついてますが……)
そして、その中にテキストファイルなどを保存する予定なのですが
何度試してみても、フォルダが上手く作成されません><

ちなみに、Macで実行している時は、問題なく動作してます。
eclipceで実行した時もjarファイルを実行した時も
ディレクトリは作成されてますし、テキストファイルの出力等もできてました。

該当のソースコード

String FS = File.separator;
String pathDir;

if (PlatformUtil.isMac()) {
    pathDir = "/Users/user/Library/test";
} else if (PlatformUtil.isWindows()) {
    pathDir = "c:¥test";
}

File dataFolder = new File(pathDir);
File dataFolder2 = new File(pathDir + FS + "test2");

if (dataFolder.mkdir()) {
    //ここに入ってくれません><
    dataFolder2.mkdir();
}

試したこと

名前が違うのかと思って、
"c:¥test"を、"C:¥test"や"C:¥¥test"に変えてみたり、\\にしてみたりもしました。
"C:" + FS + "test"などにしてみてもできないです。
また、

if (dataFolder.mkdir()) {
    dataFolder2.mkdir();
}else{
    System.out.println(dataFolder.exists());
}


というふうにして出力すると、「true」となります。何故……?
もちろん、Cドライブを確認してもフォルダは増えてません。
自分なりに調べている最中ではありますが、ファイルパスとか諸々理解できてない自覚があるので
もし何か、足りない情報などあったらご指摘下さい!
よろしくお願いします!

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 6

checkベストアンサー

+3

それ、すでにフォルダが出来ていませんか?mkdirは「すでにフォルダがある」場合失敗します。先にexistsでフォルダの存在確認をして、存在しなければmkdirを実行するように変更してください。
パスは"C:" + FS + "test""C:\\test""C:/test"が正しいのでどちらかにしてください。"C:\test"は駄目です。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/03/24 16:13

    回答ありがとうございます!
    Windowsにjarファイルを移す際、Google Driveを利用していて
    そのままファイルのダウンロード後、「ダウンロード」の中で起動などやっていたのですが
    確認してみたら、同じ「ダウンロード」のフォルダ内に、「test」のフォルダがありました……!!
    何回も検証していたため、いつできたものかまだ分からないのですが
    おっしゃる通りかと思われるので、改めて確認してみます!!
    パスについても了解しました。いつもお世話になっています><
    取り急ぎお礼まで失礼致します!

    キャンセル

+3

検討違いの回答でしたらスルーして下さい。

MACの開発環境を持っていないため、あくまでも推測ですが、円記号問題というものがあるようで、
MAC側で表示される\マークと、Windowsで表示される\マークの文字コードは別なようです。

※参考サイトからの引用です。
\ (0x5C)← Windowsで入力した円マーク
¥ (0xA5)← Macで入力した円マーク

上記より、Windowsのパスを表示させるには、Macでの\マークを入れるのではなく
Windowsで\を意味する、0x5cのコードを持つ文字を入れてやる必要があるようです。
参考サイト

なお、詳細に関しましては、
”円記号問題”、”0xa5 0x5c”などで検索頂ければ山盛り出てきます。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/03/24 16:08

    ありがとうございます!
    MacとWindowsだと円マークが違うのは知っていたのですが、
    まだちゃんと確認できてないところがあるかもしれないので、改めて調べてみたいと思います!
    取り急ぎお礼まで失礼します><

    キャンセル

+1

C:¥¥test
私の環境ではこちらにすることでフォルダが作成されました。
C:ドライブをエクスプローラーで表示したまま、F5で表示更新すると表示されたりしませんか?

またはMacとWindowsの文字コードの違いが考えられます。
jarをクリックではなく、コマンドプロンプトから実行してみてください。
java -Dfile.encoding=UTF-8 -jar makefolder.jar

またはプログラムの開始時に以下のコードで実行時の文字コードを指定してみてください。

System.setProperty("file.encoding", "UTF-8");

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/03/24 16:19

    回答ありがとうございます!
    本当ですか!!うーん、私の方では何がおかしいのでしょうか……
    今あらためて調べてみたら、Cドライブではなくjarファイルがあるフォルダ内にtestのフォルダがあったので
    作成自体はできていたみたいです(これについては、もう少し調べてみます)
    文字コードが原因になってる可能性もあるんですね。ありがとうございます、参考にさせて頂きます!
    取り急ぎお礼まで、失礼します!><

    キャンセル

+1

Windowsでjarを起動したときに動かないという認識でよいでしょうか?

パスはc:\\testが正しいかと思われます。

Windowsでeclipseから動かしたときはいかがでしたでしょうか?

Windowsがまったく動かないというのであれば、
C直下にアクセスする権限がない、とかそういうことになると思います。

Users以下のディレクトリを試してみてはいかがでしょうか。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/03/24 16:16

    ありがとうございます!
    仰る通り、Windowsでjarを起動したときのものです。
    Windowsにはeclipseを入れてなかったので、それについてはまだ確認してないです
    権限!その可能性もあるのかもしれないですね
    もう少し調べて、別のディレクトリに入れる等試してみます!!
    取り急ぎお礼まで失礼します!><

    キャンセル

+1

最初、separatorではなく、pathSeparatorにするべきでは?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/03/24 16:05 編集

    回答ありがとうございます!
    調べてみたら、たしかにそのほうがいいかもしれないですね
    変更してみました!まだ動作は確認してないですが、参考になったので
    取り急ぎお礼まで失礼します!><

    キャンセル

0

たくさんのご回答頂き、本当にありがとうございます!!

結局、どの方法で記入しても、Cドライブ内にフォルダを作成することはできませんでした。
まだ調べ途中ではありますが、恐らくは
s.t.さんの仰る通り、Cドライブに書き込み権限がなかったためかと思われます。

フォルダの作成場所は、絶対Cドライブ直下である必要がなかったので
素直に、jarファイルと同じディレクトリ内に指定することで解決致しました!
テキストファイルの書き込み・読み込みなども問題なくできました。
(「C:\\test」と記入していたのに、何故同じディレクトリ内にフォルダができていたのかは謎です……;;)

その他、お教え頂いた件についても、勉強していきます。
皆様に感謝です!!(*^^*)

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/03/24 17:35

    システムルートドライブ(C:\)には書き込めない(管理者権限の昇格が必要)のは、Windows Vista 以降での仕様(UAC)です。
    たいていの書籍は Vista 以前に書かれたものが根底にあるので、そこらへん実際にテストせずに古いまま記述してたりすることが……

    キャンセル

  • 2017/03/24 17:48

    コメント頂きありがとうございます!
    ネットで調べながらやっていて、その記事には何も書いてなかったのですが
    なるほど、そういうことだったんですね!鵜呑みにせず、古い記事は新しい情報と重ねながら調べるようにします><
    謎が解けました!感謝です(*^^*)

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.52%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Java

    13786questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • ファイルI/O

    38questions

    ファイルI/Oは、コンピューターにおけるファイルの入出力です。これは生成/削除やファイルを読み込んだり、出力をファイルに書き込むようなディレクトリやファイルの運用を含みます。