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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Java

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

ファイルI/O

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

Q&A

解決済

6回答

10657閲覧

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

serona

総合スコア25

Java

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

ファイルI/O

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

0グッド

0クリップ

投稿2017/03/24 06:19

###前提・実現したいこと
いつもお世話になっています。

独学で勉強している初心者です。
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ファイルを実行した時も
ディレクトリは作成されてますし、テキストファイルの出力等もできてました。

###該当のソースコード

Java

1String FS = File.separator; 2String pathDir; 3 4if (PlatformUtil.isMac()) { 5 pathDir = "/Users/user/Library/test"; 6} else if (PlatformUtil.isWindows()) { 7 pathDir = "c:¥test"; 8} 9 10File dataFolder = new File(pathDir); 11File dataFolder2 = new File(pathDir + FS + "test2"); 12 13if (dataFolder.mkdir()) { 14 //ここに入ってくれません>< 15 dataFolder2.mkdir(); 16}

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

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

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答6

0

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

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

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

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

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

投稿2017/03/24 06:59

Batoh33789

総合スコア136

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

serona

2017/03/24 07:08

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

0

ベストアンサー

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

投稿2017/03/24 06:58

masaya_ohashi

総合スコア9206

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

serona

2017/03/24 07:13

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

0

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

投稿2017/03/24 07:00

swordone

総合スコア20651

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

serona

2017/03/24 07:15 編集

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

0

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

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

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

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

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

投稿2017/03/24 06:55

s.t.

総合スコア2021

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

serona

2017/03/24 07:16

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

0

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

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

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

Java

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

投稿2017/03/24 06:53

Clor

総合スコア883

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

serona

2017/03/24 07:19

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

0

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

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

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

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

投稿2017/03/24 08:25

serona

総合スコア25

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tacsheaven

2017/03/24 08:35

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

2017/03/24 08:48

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問