Javaでファイル出力をしたいのですが、
改行コードを「\n」にしたところ「・」が入ってしまいました。
「・」が入らないような改行コード、あるいは
なにか良い対策案を教えて下さい。

このQ&Aに関連する最新のQ&A

A 回答 (5件)

すいません。

自己補足です。(^^ゞ

System.getProperty("line.separator");

パラメータが違ってました。先のものだとファイルの区切り文字がとれちゃいますね。(^^ゞ

やり方は色々あるのでみなさんのアドバイスを参考に一番やりやすい方法を捜して下さい。
    • good
    • 1
この回答へのお礼

みなさんどうもありがとうございます。
みなさんのアドバイスを参考に自分でも
APIを調べて勉強します。

お礼日時:2001/05/30 10:14

ct27さんの回答に補足です。



ファイルに出力するのでしたら、java.io.BufferedWriterクラスを使ってみてはいかがですか?1行出力するメソッドnewLineがあります。この改行もSystem.getProperty()で改行コードを取ってきているようです。

参考URL:http://java.sun.com/products/jdk/1.2/ja/docs/ja/ …
    • good
    • 0

機種依存にならない改行コードはJavaのSystemクラスのメソッドで解決する


ことができます。

System.getProperty("file.separator");

SUNが提供しているAPIをご参照いただけるとわかるのですが、System#getProperties()
というメソッドの説明の部分にパラメータが載っていますので是非ご覧になって下さい。
    • good
    • 0

\nがLFで0A


\rがCRで0D

ですね。
Windows依存であれば、\r\nにすればOKです。
プラットフォーム非依存にしたければ、行単位で出力する文法を使って処理するようにして、自分で改行コードをいれないようにする必要がありますね。

参考URL:http://www.asahi-net.or.jp/~dp8t-asm/java/tips/C …
    • good
    • 1

単純に\nというのはOSによってCR+LFだったり、


CRのみだったりLFのみだったりします。
「・」が入ったということは、Windowsで出力して、
何か他のOSで見たのではないでしょうか?

どうしてもLFだけにしたければ、\nではなく\x0aと
表記するべきでしょう。

ではでは☆
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q改行コードを自動変換してくれるFTPクライアント

テキストファイルをアップロードするときに、改行コードを自動変換してくれるFTPクライアントを探してます。
今まではFFFTPを使用していたのですが、このソフト、自動で改行コードを変換してくれないようです。
サーバーの漢字コードにEUCを選択し、転送モードをアスキーにして転送してみましたが、改行コードはCRLFのままでした。
テキストファイルのアップロードではFTPソフトが自動で改行コードを変換してくれるものだと思い込んでいたのですが。。。

やりたいことは、Windowsで作ったS-JIS/CRLFのテキストファイルを、漢字コードはS-JISのままで改行コードだけをLFのみに自動変換してLinuxサーバーにアップロードしたいのです。

質問としては、

(1),
FFFTPで、自動で改行コードのみを変換し、漢字コードはそのままでアップロードする方法がありましたら教えてください。

(2),
もし、(1)ができないようでしたら、他のソフトでお勧めがありましたら紹介してください。
できれば、FFFTPのように、ビューワにメモ帳など自分の好きなアプリケーションを指定できる機能があれば助かります。

宜しくお願いします。

テキストファイルをアップロードするときに、改行コードを自動変換してくれるFTPクライアントを探してます。
今まではFFFTPを使用していたのですが、このソフト、自動で改行コードを変換してくれないようです。
サーバーの漢字コードにEUCを選択し、転送モードをアスキーにして転送してみましたが、改行コードはCRLFのままでした。
テキストファイルのアップロードではFTPソフトが自動で改行コードを変換してくれるものだと思い込んでいたのですが。。。

やりたいことは、Windowsで作ったS-JIS/CRLFのテキス...続きを読む

Aベストアンサー

その確認方法だと、FFFTPがDLしてそれを開いているので、DL時にFFFTPがLFをCRLFに再度変換しています。

ちゃんと確認するなら、FFFTPでアップしたものを変換しない方法で落として確認しないとだめです。

当方で、FFFTPでアップしたものを、sambaで直接アクセスしてひらいたら、ちゃんとLFになっていました

QjavaにおけるCSV出力時の文字コード改行コード

JavaでCSVを出力する処理を作りました。

下記コードだとUnix環境で文字コードSJISで改行コードLFで出力されますが、
Windows環境でもUnix環境でも一律、文字コードSJISで改行コードCRLFで出力されるようにしたいです。

何かいい方法はありませんでしょうか。

なお、printlnで出力している行が多い為、
bw,Print("日付" + 変数A + \r\n);
というふうに一行づつ変更するのは避けたいと思っております。


try{

PrintWriter bw = new PrintWriter(new BufferdWriter(new OutputStreamWriter(new FileOutputStream(/tmp/test.csv),"SJIS")));

bw.println("日付" + 変数A);
bw.println("氏名" + 変数B);




}catch(Exception e){
// ログに出力
}

Aベストアンサー

System.setProperty("line.separator", "\r\n"); とすればbw.println()での出力改行コードを強制的にCRLFにできると思います。
ただし、この方法は特定のbwオブジェクトだけではなくline.separatorプロパティを参照する全てのコードが影響を受けるので、副作用に注意が必要です。

Q改行コードの変換と削除

改行コード変換メソッドで$dataには配列形式のデータが入ります。
public function v_line($val, $arr = false)
{
$line = '';
if(is_array($val)){
return array_map(array($this, 'v_line'), $val);
}

return str_replace(array("\r", "\n"), $line, $val);
}

//メソッド実行
$this->v_line($data);

この結果全ての改行コードが削除されます。これを特定のキーのみ削除ではなく"\n"に
統一させるように変換したいのですがどのようにすればできますでしょうか?

//改行コード削除しないキー配列
$arr = array('comment01', 'comment02');
//$arrのキーのみ改行コードを変換しその他は改行コード削除
$this->v_line($data, $arr);

改行コード変換メソッドで$dataには配列形式のデータが入ります。
public function v_line($val, $arr = false)
{
$line = '';
if(is_array($val)){
return array_map(array($this, 'v_line'), $val);
}

return str_replace(array("\r", "\n"), $line, $val);
}

//メソッド実行
$this->v_line($data);

この結果全ての改行コードが削除されます。これを特定のキーのみ削除ではなく"\n"に
統一させるように変換したいのですがどのようにすればで...続きを読む

Aベストアンサー

function v_line($val, $arr, $line=""){
$ret = array();
if(!is_array($val)){
return str_replace(array("\r\n", "\r", "\n"), $line, $val);
}else{
foreach($val as $key=>$value){
if(in_array($key, $arr)){
$ret[$key] = v_line($value, $arr, "\n");
}else{
$ret[$key] = v_line($value, $arr);
}
}
return $ret;
}
}

こんな感じでしょうか。

Q改行コード(\n)を削除したい場合

テキストエリア(Swing)に
"test1"
"test2"
と入力されたものを、
ひとつにつなげたいのですが、
test1の後に\n?が入っているため、
うまくつながりません・・・。
どうすれば\nを消せるでしょうか?
ちなみにtest1に対してindexOf('\n');で検索したら-1とでます。
2つの文字列はStringTokenizer st = new StringTokenizer(txtAreaString, "\n");
で取得しています。

よろしくお願いします。

Aベストアンサー

実際にやってみてはいないのですが、test1に対してtrim()を実行するのではだめでしょうか…。

使い方は、ご存知と思いますがこんな感じです。
String str1 = test1.trim();

JavaDocを見る限り、『このメソッドは文字列の先頭と最後から空白を切り取るために使用できます。この場合、実際には、すべての ASCII 制御文字も切り取りられます。』とあるので、タブや改行なども切り取られるような気がします。

Q改行コードを変換せずにアップする際の不具合

FTPでアップする際の改行コードについてお教え下さい。
Windowsの改行コードのまま(バイナリーモード)にてunixサーバーへアップロードすると
apacheやphpなどモジュールやhtmlの表示で不具合が発生することはありますか?

目的として、バイト数で差があるか確認したいので、crlf > lf 変換をしたくありません。

どなたかご教授頂けますと助かります!

Aベストアンサー

CRコード1文字を「CR」と表記します。

CRが改行の一部ではなく、「CR」という文字である、と認識され、正常に動作しないことがあります。
たとえば、CGI用のPerlスクリプトで、1行目に
#!/usr/bin/perl
と等書きますが、これは、/usr/bin/perlコマンドでこのスクリプトを処理しろ、という意味です。
ところが、CRがあると
「/usr/bin/perlCRコマンドでこのスクリプトを処理しろ」
という意味になり、/usr/bin/perlCRコマンドで実行しようとします。
通常はそんなコマンドは無いのでエラーです。

システム標準の改行コードによらず、CRLF/LFどちらも改行として処理するものもありますので、必ずおかしくなるとは限りません。
ただ、相手に合せるのが無難です。


対処としては、次のようなのも考えられます。
・Windows側でLFコードで書く
大抵のエディタでLFでの改行をサポートしています。
・バイト数での確認をやめる。
例えば、md5sumのテキストモードでハッシュを比べる、とか。

QUTF-8での改行"\n"について

ほかに質問されている方がいらっしゃらないようですので、質問いたします。

ダイアログがでて、どちらか選択させるというJavaScriptを作成しているのですが、
文字コードを“UTF-8”にすると、
ダイアログで表示させる文字列の改行がうまくいきません。(厳密にいうと、"\n"が利きません。)
どうしたらよいのでしょうか?
以下例文です。


<SCRIPT LANGAGE="JavaScript">
<!--
confirm("インストールされていません。\nダウンロードしますか?");
-->
</SCRIPT>

解決法をご存じの方はご教授ください。
よろしくお願いいたします。

Aベストアンサー

原因は分かりませんが、文字コードのみの問題ではなく、環境に依存した問題と思われます。
私の環境(WindowsMe+IE6)では、METAタグで文字コードを指定すれば正しく動作しています。

Q改行コードを変換できません(>_<)

突然、改行コードの変換ができなくなりました。
使っているエディタはJedit4です。
改行コードをLFにして、保存してもなぜか開いてみるとCRになって保存されているんです。

新規作成して保存した書類は、LFにちゃんと保存できるのですが、
CGIをカスタマイズしようとしてあるファイルを開いて、改行コードをLFに設定して保存しても、なぜかLFにならないのでCGIを動かすこともできないんです。

いったい何が原因なんでしょうか?
何かアドバイスをお願いします。

Aベストアンサー

初期設定の「コード変換」の「jisコードKOUT」が切り替わっているなんて事はないですか?

QJAVA Spring 改行コードを含む文字列をjspファイルでメッセージボックスに表示する方法

javaの初心者です。フレームワークはSpringを使って開発しています。
Javaで改行の入った文字列をjspファイルでJava scriptでメッセージボックスに表示させたいのですが、「1行目\n2行目」と表示されてしまい、改行されません。
ソースを抜粋したものは、下記のとおりです。


コントローラ
@RequestMapping(value = "/pm", params = "nyuko", produces = "text/plain;charset=UTF-8", method = RequestMethod.POST)
public String nyuko(@ModelAttribute FormNyuko formNyuko, Model model, HttpServletRequest request,
HttpServletResponse response, HttpSession session, Map<String, String> map)
throws ServletException, IOException {

   String CRLF = "\n";
   ErrorMessage = "1行目" + CRLF
ErrorMessage = ErrorMessage + "2行目"
   map.put("ErrorMessage", ErrorMessage);
}


JSPファイル

<SCRIPT type="text/javascript">
function onLoad(){
if("${ErrorMessage}" != ""){
alert("${ErrorMessage}");
}
}
</script>

</head>
<body onLoad="onLoad()" bgcolor="#FFDAB9">


うまく改行させる方法を、どなかたご教授いただければ幸いです。

javaの初心者です。フレームワークはSpringを使って開発しています。
Javaで改行の入った文字列をjspファイルでJava scriptでメッセージボックスに表示させたいのですが、「1行目\n2行目」と表示されてしまい、改行されません。
ソースを抜粋したものは、下記のとおりです。


コントローラ
@RequestMapping(value = "/pm", params = "nyuko", produces = "text/plain;charset=UTF-8", method = RequestMethod.POST)
public String nyuko(@ModelAttribute FormNyuko formNyuko, Model model, HttpServl...続きを読む

Aベストアンサー

No.1です。

一応、

<html>
<head>
<title>alear test</title>
<SCRIPT type="text/javascript">
function onLoad(){
if ("1行目\n2行目" != "") {
alert("1行目\n2行目");
}
}
</script>
</head>
<body onLoad="onLoad()" bgcolor="#FFDAB9">
body
</body>
</html>

という内容のhtmlファイルを作って、ブラウザで表示してみて大丈夫だったので、回答してしまったのですが、よく考えてみると、サーブレット側で
String CRLF = "\n";
とすると、function onLoadの部分が、

function onLoad(){
if ("1行目
2行目" != "") {
alert("1行目
2行目");
}
}

となってしまうかも知れませんね。
これは、改行がほんとの改行になってしまって、改行文字(\n)の指定にならなくなってしまうからです。

なので、
String CRLF = "\\n";
としてみてください。
これで、"\n"が"\n"のまま出力されます。

No.1です。

一応、

<html>
<head>
<title>alear test</title>
<SCRIPT type="text/javascript">
function onLoad(){
if ("1行目\n2行目" != "") {
alert("1行目\n2行目");
}
}
</script>
</head>
<body onLoad="onLoad()" bgcolor="#FFDAB9">
body
</body>
</html>

という内容のhtmlファイルを作って、ブラウザで表示してみて大丈夫だったので、回答してしまったのですが、よく考えてみると、サーブレット側で
String CRLF = "\n";
とすると、function onLoadの部分が、

function onLoad(){
if ("1行目
2行目"...続きを読む

Q改行コードの変換について

OS:Solaris2.6

改行コードをunixからms-dosへ、ms-dosからunixへ変換したいと思っています。
ながれとしては、ms-dosで作成したファイルをunixのほうで編集(プログラム)
して、再びms-dosに戻すといったことがしたいと思っています。

そこで、
nkf -e aaa | tr '\r\n' '\n' > bbb
nkf -e ccc | tr '\n' '\r\n' > ddd

aaa:ms-dos
ccc:編集後のファイル

これでできると思ったのですが、dddの改行コードの表示がE'で
Macintoshの改行コードになってしまします。
また、bbbのファイルですが改行が2回行われてしまいます。

aaa のファイルの内容

123
456

bbb のファイルの内容

123

456

どのようにすれば、解決できるか教えていただけないでしょうか?
お願いします。

Aベストアンサー

ちなみに、
sed では通常 \n を行の区切りとして認識しているので、
 s/\n/\r\n/
は、そもそも前半部分がマッチしません。つまり、一度もこの置換コマンドは実行されません。
上記のようなことに対応するのが、
 s/$/\r/
になりますが、たぶん、\rは文字通り 文字\ と 文字r として認識されてしまうと思います。そこで、
 s/$/^M/
とするわけです。

QNクィーン問題のJAVAソースコード

お世話になっております。
Nクィーン問題のJAVAプログラムソースを探しています。C言語では見つかるのですが、JAVAでは見つかりません。どこで見つけられるのかご存知の方がおられましたら教えて頂けるとうれしいです!
よろしくお願い致します。

Aベストアンサー

これなんてどうでしょうか?(参考URL)

参考URL:http://www.tokumaru.org/techterm/8queen.html


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング