Javaファイル出力方法の間違い?

このQ&Aのポイント
  • Javaでファイルを出力する際、Cドライブ直下に置きたいが、プログラムファイルのところに作られてしまう。
  • ファイル出力の処理でパスの指定方法に問題があるのか。
  • 解決策を教えていただけないだろうか。
回答を見る
  • ベストアンサー

java ファイル出力 Cドライブ直下

お世話になっております。 現在eclipseのjavaでファイルを出力するものを作成しております。 出力されたファイルはCドライブの直下へ置きたいと思っております。 そこで File cdirectory = new File("c:\\"); FileOutputStream out = null; out = new FileOutputStream(cdirectory + "aaa.xls"); と処理をしています。 ところが実際にプログラムを起動しファイルを出力するとプログラムファイルのところに 「\\aaa.xls」という名前でファイルが作られてしまっています。 何か書き方が間違っているのでしょうか? お知恵を頂ければと思います。 宜しくお願いします。

  • Java
  • 回答数3
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

え、間違えているっていう回答があるけど、俺の環境だとちゃんとaaa.xlsが出来てるよ。 out = new FileOutputStream(cdirectory + "aaa.xls"); ここで"c:\\"+"aaa.xls"になってるとおもうよ。 fileのtoString()がpathを返すようになってるから別にわざわざStringで定義しなくてもおっけーでしょ?

その他の回答 (2)

  • Wr5
  • ベストアンサー率53% (2177/4070)
回答No.2

Javaは詳しくないので、他の方の回答待った方がいいのかも知れませんが……。 String cdirectory = new String("c:\\"); FileOutputStream out = null; out = new FileOutputStream(cdirectory + "aaa.xls"); なんじゃないんでしうょうか? http://docs.oracle.com/javase/jp/6/api/java/io/FileOutputStream.html#FileOutputStream%28java.lang.String%29 まあ、それはそれとして…… OSによってはC:\の直下にファイルが置けなかったりしますけど、そのヘンはどうなんですかねぇ? # Program Filesの下に書けているみたいですから、質問者さんのOSでは問題ないのかも知れませんが。 さらに……作成したプログラムをLinuxとかで動かした場合はどうなるんですかね?

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.1

思い切り間違ってる 修正方針は2通りあると思うわ その1) cdirectory をStringにする その2) new FileOutputStreamの引数をFileにする どっちでもいいと思うけど かっこいいのはその2の方かな

関連するQ&A

  • POIの出力場所について

    お世話になります。 POI 出力などで検索を行いましたが上手くHITしませんでしたのでご質問させて頂きます。 例えば HSSFWorkbook workbook = null; FileOutputStream out = null; out = new FileOutputStream("質問.xls"); workbook.write(out); など記述し出力すると思うのですが「質問.xls」を C:\testに指定して出力したいなど指定した階層に出力するということは出来るでしょうか。

    • ベストアンサー
    • Java
  • JavaのSystem.setOut、System.setErrについ

    JavaのSystem.setOut、System.setErrについてです。 例えば、以下のようにして標準出力をファイルに出力するようにしたとします。 PrintStream psOut = new PrintStream( new FileOutputStream( new File("C:\\temp", "stdout.txt") ), true ); System.setOut( psOut ); System.out.println( "test Out" ); この後、プログラムを終了する場合、PrintStreamをcloseすべきなのでしょうか? よろしくお願いします。

    • ベストアンサー
    • Java
  • POIで出力したExcelファイルで変更メッセージ

    POIで出力したExcelファイルを開いてすぐに閉じると 「'○○.xls'への変更を保存しますか?」といったメッセージが出てしまい、 何とかならないかと困っている状況です。 全体的な流れとしては単純で、テンプレートとなるExcelファイルを用意して それをPOIを利用して読み込み、値をセットして、別名で保存しなおしています。 テンプレートは、SUM関数が書かれただけのシンプルなものです。 POIのバージョンは、3.8です。 JREは、1.5.0_15を使用しています。 プログラムは以下になります。 -----------------------------------------------------   int rowNo = 0;   int colNo = 0;      FileOutputStream fileOutputStream = null;   try{    //EXCEL読み込み    HSSFWorkbook inputWorkbook = new HSSFWorkbook(     new FileInputStream(new File("C:\\Test1.xls")));    fileOutputStream = new FileOutputStream("C:\\結果.xls");        //最初のシートを取得する    HSSFSheet sheet = inputWorkbook.getSheetAt(0);    sheet.setForceFormulaRecalculation(true);        //ROW取得    HSSFRow row = sheet.getRow(rowNo);    if(null == row)row = sheet.createRow(rowNo);    //CELL取得    HSSFCell cell = row.getCell(colNo);    if(null == cell)cell = row.createCell(colNo);    //値を書き込む    cell.setCellValue(1);        //EXCELファイル書き出し    inputWorkbook.write(fileOutputStream);   }catch (Exception e) {    e.printStackTrace();   }finally{    try{     if(null != fileOutputStream)fileOutputStream.close();    }catch (Exception e) {     e.printStackTrace();    }   } ----------------------------------------------------- 以下の一文を除くと、変更メッセージは表示されなくなります。 sheet.setForceFormulaRecalculation(true); しかし、この一文がないとSUM関数の計算が動作しません。 記述、認識の不備、また解決に向けた良い方法がありましたら ご教授のほど、よろしくお願いします。

    • ベストアンサー
    • Java
  • CSVファイルを列ごとに読み込む処理について

    はじめまして。 よろしくお願いいたします。 プログラミングに興味をもち、JAVAに触れている者です。 現在eclipseでCSVファイルを列ごとに読み込んで表示する、というプログラムを作成しているのですが、コンパイルエラーを除去することができません。 エラー内容は 「処理されない例外の型 FileNotFoundException」 です。 これを見る限りでは読み込むファイルがないということらしいのですが、CSVファイルはちゃんと作成し、作成中のプログラムのファイルがあるディレクトリに置いてあります。 原因を探したいのですが、eclipseのこともjavaのこともよくわかっていないため、まるで見当がつきません。 どうかご教示をお願いいただけませんでしょうか? 以下が作成中のプログラムです。 package ioTest; import java.io.BufferedReader; import java.io.File; import java.io.InputStreamReader; import java.io.FileInputStream; public class IOsample { public static void main (String[] args){ BufferedReader br = null; File csv = new File("sampleCSV.csv"); br = new BufferedReader( new InputStreamReader( new FileInputStream(csv))); while (br.ready()){ System.out.println(br.readLine()); } br.close(); } } レベルの低い質問で申し訳ありませんが、なにとぞよろしくお願いいたします。

    • ベストアンサー
    • Java
  • VistaでCドライブ直下に保存したファイルをコンパイルできない

    初めて質問させて頂きます。VistaのPCでJavaのプログラムファイルを Cドライブ直下に保存し、コマンドプロンプトでjavacでコンパイルすると「書き込み中にエラーが発生しました。アクセスが拒否されました」 とエラーになります。フォルダを作成して、そこにファイルを保存すればコンパイルできるのですが、Cドライブ直下に保存したファイルをコンパイルしたいのです。Vistaの設定を何か変更すればよろしいのでしょうか。宜しくお願い致します。

    • ベストアンサー
    • Java
  • ファイルロック後の書き込みについて

    ファイルAをロックしファイルBを読み込み ファイルAに書き込むプログラムを作成しています。 単体起動では問題無く動くのですが 複数起動するとファイルの書き込みが行われなくなってしまいます。 ロックしたプログラム以外はロックエラーになり ロックについては正常に動いているように見えます。 なぜ書き込みが行われなくなってしまうかご教授いただけますか? import java.io.* ; import java.nio.*; import java.nio.channels.*; public class CopyFile { public static void main(String[] args) throws Exception { try{ FileInputStream fis = null; FileOutputStream output = null; FileChannel outChannel = null; FileLock outFileLock = null; byte buf[] = new byte[2048]; int len; int count = 0; if (args.length != 2) { System.out.println("使用法: java CopyFile ファイル名1 ファイル名2"); System.exit(0); } //if String source= args[0]; String target= args[1]; File sourceFile = new File(source); File targetFile = new File(target); fis = new FileInputStream(sourceFile); output = new FileOutputStream(targetFile); outChannel = output.getChannel(); outFileLock = outChannel.tryLock(); if (outFileLock == null) { System.out.println("rock error!!"); System.exit(0); } else { while ((len = fis.read(buf)) != -1) { output.write(buf, 0, len); count += len; } Thread.sleep(5000); output.flush(); output.close(); fis.close(); } }catch(Exception e){ System.out.println(e); } } } // Class CopyFile

    • ベストアンサー
    • Java
  • ファイル出力時の

    以下のソースでファイル出力するのですが、 BufferedReader br = new BufferedReader(new FileReader(new File(args[0]))); PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(args[1]))); //一行読み込みを行った文字列を格納 String line; //一行読み込み while((line = br.readLine()) != null){ //一行書き込み pw.write(line); System.out.println(line); } コンソールへの出力は正常に出力されるのですが、 ファイルへの出力は改行されずに一行で出力されてしまいます。 どうすればファイル出力も正常になるか教えてください。

  • javaの出力結果について

    javaのプログラムを記述してますが、出力結果がnullになってしまいます。 解決策を教えて下さい。 ------出力結果------- null null null null null null -----------下記、ソースになります。------------ public class LibApp { public static void main(String[] args) { Library my_lib= new Library(); my_lib.addBook(new Book("吾輩は猫である","夏目 漱石","小説")); my_lib.addBook(new Book("奥の細道","松尾 芭蕉","小説")); my_lib.showBooks(); } } import java.util.ArrayList; import java.util.List; public class Library { List<Book> bList; public Library() { bList=new ArrayList<Book>(); } public void showBooks() { for (Book str : bList) { str.showBook(); } } public void addBook(Book book) { this.bList.add(book); } } public class Book { String title; String author; String content; public Book(String title, String author, String content) { title = this.title; author = this.author; content = this.content; } public void showBook() { System.out.println(title); System.out.println(author); System.out.println(content); } }

    • ベストアンサー
    • Java
  • JAVAと構文解析器(cabocha)の連結について

    現在、eclipseでJAVAをやっています。(環境はwindows XPです。) JAVAから構文解析器(cabocha)を用いて、文章を解析させたいと考えています。 [やりたいこと] 1.INPUTファイルを自動生成(ファイルA.txt)をする。 2.ファイルAの内容をコマンドプロンプトからCabochaを実行し、   解析を行う。 3.その結果をOUTPUTファイル(ファイルB.txt)に保存し、出力させる。 そこで、2番について教えていただきたいのですが、JAVAからコマンドプロンプロトを実行し、 cd c:\program files\cabocha\bin cabocha.exe -f1 input.txt --output=output.txt の2行をペーストし、cabochaを実行させたいのですが、どのようにすればよいのでしょうか。 自分がわかっているプログラム以下のところまでです。 [プログラム] public static void main(String[] args) throws IOException{ File file1 = new File("C:\\Program Files\\CaboCha\\bin\\input.txt"); try{ String str=null; InputStreamReader reader=new InputStreamReader(System.in); BufferedReader buffreader =new BufferedReader(reader); System.out.println("文字を入力してください。"); str = buffreader.readLine(); PrintWriter pr =new PrintWriter(new BufferedWriter(new FileWriter("C:\\Program Files\\CaboCha\\bin\\input.txt"))); pr.write(str); System.out.println(str+"が書き込まれました。"); pr.close(); Runtime rt = Runtime.getRuntime(); Process pro = rt.exec("C:\\WINDOWS\\system32\\cmd.exe"); } 誰かわかる方、ご教授お願いいたします。

  • eclipse で JAVAもC++も開発したい

    C++をやっていて、最近JAVAもプログラムするようになったのですが、 JAVAで使うeclipseが非常に便利なので、これをC++で使えないかと思っています。 http://www.eclipse.org/downloads/ を見ると、JAVAを使うためのeclipseとC++を使うためのeclipseは別々に用意されているようなのですが、二つ eclipse をインストールするとディスクがもったいない気がします。 ● eclispe 一つで JAVAとC++の開発は出来ないのでしょうか?

    • ベストアンサー
    • Java

専門家に質問してみよう