ねごとめも背景

    ねごとめも



    作成したプログラムは、こちらでも公開しています。
    よかったら覗いてみてください。_(┐「ε:)_
    → javascript,SVG で作成したプログラム置き場
    → プログラム一覧 - (2)

    java csv ファイルの読み込み, 書き出し 修正(5)

    前回作成した csv ファイルの読み込み, 書き出し[カンマ区切り,タブ区切り]修正(4) を少し修正。
    前回の csv クラスは、改行を含むセルや、セル内に区切り記号が存在する場合、
    ダブルクォーテーションで囲まれた値を配列に格納。
    今回は、シングルクォーテーションで囲まれた値も配列に格納出来るように訂正。
    ダブルクォーテーション、シングルクォーテーションで囲まれた値が混在する場合も配列に格納。

    出力した csv ファイルを、 OpenOffice に読み込ませてみると、行、列数は同じ結果。
    同じ csv ファイルを LibreOffice に読み込ませてみると、行、列数が一致しない場合があった。
    セルの終わりに、ダブルクォーテーション、シングルクォーテーションが
    連続して出現した場合に、行、列数が一致しない。
    セルの値もクォーテーション数が入力数と同じにならない。
    確認した範囲では、区切り記号の前に存在するクォーテーションが奇数の場合、セルの終了?
    偶数の場合、区切り記号は区切りとして認識されない。(?_?)

    OpenOffice では偶数の場合も区切りとして認識される結果だった。

    例えば、クォーテーションが 5 つ並んだ場合、セルに表示されるクォーテーションは 2 つ。
    この辺りの処理がまだできてない。(-_-;)

    ■ csvSample.java

    
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.util.Date;
    public class csvSample
    {
    	public static void main(String args[])
    	{
    		try
    		{
    			//CSV csvObj=new CSV('\t');// 読み込む csv の区切り記号
    			CSV csvObj=new CSV(',');// 読み込む csv の区切り記号
    			String[][] data=csvObj.fgetcsv("template.csv","utf-8");//template.csvファイルを utf-8 で読み込み
    			csvObj.setDelimiter(',');// 出力する csv の区切り記号の設定
    			//System.out.println("rows="+data.length+"        cols="+data[0].length);
    			csvObj.write("result.csv","utf-8");//result.csv へ utf-8 で出力
    		}
    		catch(FileNotFoundException e)
    		{
    			System.out.println("FileNotFoundException error");
    		}
    		catch(IOException e)
    		{
    			System.out.println("IOException error");
    		}
    	}
    }
    

    ■ CSV.java

    
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.util.ArrayList;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    class CSV
    {
    	private char delimiter;
    	CSV(char _delimiter)
    	{
    		delimiter=_delimiter;
    	}
    	
    	public void setDelimiter(char _delimiter)
    	{
    		delimiter=_delimiter;
    	}
    	
    	final void setData(String[][] data){ csv=null; csv=data; }
    	
    	final String[][] setData(String[][] data,Integer index)
    	{
    		String[][] newData=new String[data.length-1][data[0].length];
    		System.arraycopy(data,index,newData,0,data.length-1);
    		return newData;
    	}
    	
    	final String[][] join(String[][] d1,String[][] d2)
    	{
    		String[][] data=new String[d1.length+d2.length][d1[0].length];
    		System.arraycopy(d1,0,data,0,d1.length);
    		System.arraycopy(d2,0,data,d1.length,d2.length);
    		return data;
    	}
    	
    	final void write(String fileName,String encode) throws FileNotFoundException, IOException
    	{
    		try(BufferedWriter output=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileName),encode)))
    		{
    			StringBuffer result=new StringBuffer();
    			for(int i=0;i<csv.length;i++)
    			{
    				for(int j=0;j<csv[i].length;j++)
    				{
    					String comma="\""+delimiter+"\"";
    					String quot=(j==0)?"\"":"";
    					if(j==(csv[i].length-1)){ comma="\"\n"; }
    					result.append(quot);
    					result.append(csv[i][j]);
    					result.append(comma);
    				}
    			}
    			output.write(result.toString().trim());
    			output.close();
    		}
    	}
    
    	private String[][] csv;
    	final String[][] fgetcsv(String fileName,String encode) throws FileNotFoundException, IOException
    	{
    		csv=null;
    		try(BufferedReader input=new BufferedReader(new InputStreamReader(new FileInputStream(fileName),encode)))
    		{
    			ArrayList<ArrayList> rows=new ArrayList<>();
    			ArrayList<String> cols=new ArrayList<>();
    			StringBuffer str=new StringBuffer();
    			int colsMax=0;
    			boolean group=false;
    			int ch;
    			char prev=delimiter;
    			char quot='"';
    			boolean space=false;
    			while((ch=input.read())!=-1)
    			{
    				char _char=(char)ch;
    				if(!group)
    				{
    					if(_char=='\r'){}
    					else if(_char=='"'||_char=='\'')
    					{
    						if(prev==delimiter)
    						{
    							group=true;
    							quot=_char;
    						}
    						str.append(_char);
    						prev=_char;
    					}
    					else if(_char==delimiter)
    					{
    						cols.add(str.toString());
    						str=new StringBuffer();
    						prev=_char;
    					}
    					else if(_char=='\n')
    					{
    						cols.add(str.toString());
    						rows.add(cols);
    						colsMax=(colsMax<cols.size())? cols.size():colsMax;
    						cols=new ArrayList<>();
    						str=new StringBuffer();
    						prev=delimiter;
    					}
    					else
    					{
    						str.append(_char);
    						prev=_char;
    					}
    				}
    				else
    				{
    					if(_char=='\r'){}
    					else if(_char==delimiter)
    					{
    						if(str.length()==1)
    						{
    							str.append(_char);
    						}
    						else if(prev==quot)
    						{
    							group=false;
    							cols.add(str.toString());
    							str=new StringBuffer();
    						}
    						else
    						{
    							str.append(_char);
    						}
    						prev=_char;
    						space=false;
    					}
    					else if(_char=='\n')
    					{
    						if(str.length()==1)
    						{
    							str.append(_char);
    							prev=_char;
    						}
    						else if(prev==quot&&!space)
    						{
    							group=false;
    							cols.add(str.toString());
    							rows.add(cols);
    							colsMax=(colsMax<cols.size())? cols.size():colsMax;
    							cols=new ArrayList<>();
    							str=new StringBuffer();
    							prev=delimiter;
    						}
    						else
    						{
    							str.append(_char);
    							prev=_char;
    						}
    					}
    					else if(_char==' ')
    					{
    
    						str.append(_char);
    						space=true;
    					}
    					else
    					{
    						str.append(_char);
    						prev=_char;
    						space=false;
    					}
    				}
    			}
    			if(cols.size()!=0||str.length()!=0)
    			{
    				cols.add(str.toString());
    				rows.add(cols);
    				colsMax=(colsMax<cols.size())? cols.size():colsMax;
    			}
    			csv=new String[rows.size()][rows.get(0).size()];
    			for(int i=0;i<csv.length;i++)
    			{
    				for(int j=0;j<csv[i].length;j++)
    				{
    					String result;
    					try{ result=(String)rows.get(i).get(j); }catch(IndexOutOfBoundsException e){ result=""; }
    					result=result.replaceAll("^[  \t\n]+|\t|[  \t\n]+$","");
    					Pattern p1=Pattern.compile("(?s)^\'.*\'$");
    					Matcher m1=p1.matcher(result);
    					Pattern p2=Pattern.compile("(?s)^\".*\"$");
    					Matcher m2=p2.matcher(result);
    					if(m1.matches()||m2.matches())
    					{
    						result=result.replaceAll("(?s)^[\'|\"]|[\'|\"]$","");
    					}
    					//System.out.println("["+result+"]");
    					csv[i][j]=result;
    				}
    			}
    			input.close();
    		}
    		return csv;
    	}
    }
    

    2013/07/18 [01:44]
    • category : java,
    • comment : 0

    DNS サーバーエラー??[ このページは表示できません] ( ie10 )

    回線 ( CATV )
    ルーター ( buffalo BBR-4HG )
    OS ( Windows 7 )

    数ヶ月前、プロバイダのメンテナンスが行われた。
    ”記憶” では、それ以降、ネット接続が不安定な状態が続いてる。
    症状としては、
    1) web サイト閲覧時、画像抜けが起こる場合がある。
    2) web サイト読み込み時にエラー画面が表示される場合がある。( 何度か更新すると表示される)
    3) web サイトのレイアウトが崩れる場合がある。( css ファイルが読み込まれない )
    4) HTML タグの iframe のコンテンツが読み込まれず、エラーが表示される場合がある。
    5) 特定の web サイトが閲覧できない。
    6) *ソフトのアップデートが出来ない。
    * OS, ウイルスソフトのアップデートは問題なし。
    flash, ブラウザ, ソフト等のアップデートが出来ない状態。
    flash はインストールの途中でエラーが表示されインストールが止まってしまう。
    flash は、 flash レスキュー からファイルを落としてアップデート実行。
    ブラウザ, ソフトは、update ボタン連打でようやくアップデート出来る感じ。

    んで、症状を改善するために試してみたこと。
    1) モデムのリセット
    2) ルーターのリセット
    3) セキュリティーソフトを終了させてインターネットへ接続。
    4) セキュリティーソフトをアンインストールした状態でインターネットへ接続。
    5) セキュリティーソフトを他社に変えて接続。 ( フルスキャンしてもウィルスなどは検出されず。 )
    6) OS の再インストール
    7) ブラウザを変えてインターネットへ接続。
    以上の事を試しても症状が改善されない。

    ルーター、又はモデムの不具合の可能性を疑ってみる。
    ルーターは購入から一年も経ってない。
    モデムはそれより古い。
    って事で、とりあえず、モデムを疑って、プロバイダに問い合わせ。
    プロバイダから連絡を受け、モデムの調査。
    モデムの不具合との事でモデムを取替。
    PC を起動させると、見事に症状が改善されてる!
    おぉっ!って、
    ルーターが接続されてなく PC とモデムが直結になってる。
    あぇ?って感じで、ルーターを接続してみると以前と同じ症状。
    その場に立ち会ってないし。。
    これって、ルーターの不具合の可能性もあるよねっ!て事で色々試して症状が改善された手順。

    Buffalo IP ユーティリティ → 管理画面 → アドバンス → 管理
    DNS1(プライマリ), DNS2(セカンダリ),に表示されてる IP アドレスをメモ。

    コントロール パネル → ネットワークと共有センター → ローカルエリア接続 → プロパティ
     → インターネットプロトロルバージョン4 → プロパティ → 次の DNS サーバーのアドレスを使う
    優先 DNS サーバー, 代替 DNS サーバーへメモした IP アドレスを入力

    上記の手順でこれらの症状は改善出来た。
    上記の設定についてプロバイダに問い合わせた所、問題はないみたい。詳しくはわからない。('A`)
    とりあえず、この設定で様子見。
    環境は、それぞれだから、まずは、プロバイダに問い合わせをっ!


    2013/07/02 [01:06]
    • category : PC,

    カウンター

    プロフィール

    negotoy

    Author:negotoy
    好きな選手権 :chara選手権
    好きなコーナー :リスナーが凸して
    椎名林檎の丸の内を歌うコーナー

    PC ゲーム歴 :
    モバゲーのタイピングゲームで
    タイピングの練習(サービス終了)
    ニックネーム : クッキー
    以降ゲーム歴なし

    [ YouTube ]

    chara : あいのうた
    椎名林檎 : ありあまる富
    かせきさいだぁ : じゃっ 夏なんで
    阿部真央 : 貴方の恋人になりたいのです

    最新記事

    カテゴリ

    カレンダー

    06 | 2013/07 | 08
    - 1 2 3 4 5 6
    7 8 9 10 11 12 13
    14 15 16 17 18 19 20
    21 22 23 24 25 26 27
    28 29 30 31 - - -


    PAGE TOP
    広告: