2012-04-10 14 views
0

私は、印刷するプリンタに直接ファイルを送信するには、この小さなJavaプログラムを書いた:送信ファイル - Javaの

public static void main(String args[]) throws IOException 
{ 
    try{ 
     InputStream in= new FileInputStream(new File("C:\\example.txt")); 
     OutputStream out=new FileOutputStream(new File("\\\\path\\printer\\example.txt")); 

     // Transfer bytes from in to out 
     byte[] buf=new byte[1024]; 
     int len; 
     while ((len=in.read(buf)) > 0) { 
      out.write(buf,0,len); 
     } 
     in.close(); 
     out.close(); 
    } 
    catch(Exception ex) 
    { 
     ex.printStackTrace(); 
    } 
} 

これは、Mac上のウィンドウでは正常に動作しますが、ありません。

どのように私はMac OS Xで同じことをすることができますか?

私は、Macマシン上のあるフォルダから別のフォルダにファイルをコピーしようとしましたが、FileOutputStreamがリモートフォルダを取得したときには動作しませんでした。

+0

まあ、C:\\ example.txtは、Macでは初心者では動作しません。 /tmp/example.txtのようなパスを試しましたか? – Chris

+0

私が言ったように、私はローカルのMacマシンでファイルをコピーしようとしていましたので、はい、そのフォームのパスを試しました。あなたの答えには –

答えて

0

ファイル共有について、あなたは

smb://server/folder/file.txt 

のようなものにそのようなUNCパスを変換することができますしかし、私は、これはプリンタ共有のために可能であると信じていません。私はもっ​​と関わっていると思う。 SMBプリンタのURLは、いずれの場合も

smb://[email protected]/computer/printer 

のように見えるものは、このように動作させるための方法はありませんので、FileOutputStreamは、URLを書き込むことはできません。

Javaには完全な印刷APIが用意されていますが、それほど難しいことはありません。それを習得すれば、すべてのプラットフォームでこの問題を解決する移植可能なプログラムを書くことができます。

+0

ありがとう。 jcifsを使って同じことを実装することは可能でしょうか?これで、あなたは次のようなことができます SmbFileInputStream in = new SmbFileInputStream( "smb://ホスト/ c/My Documents/somefile.txt"、auth); 私はそれを使ってみましたが、guestを使用しているときに認証が機能しません。上記の例では全く認証を使用していません。ここに小さな例があります:http://jcifs.samba.org/src/docs/api/ –