投稿

ラベル(JAVA)が付いた投稿を表示しています

変更するファイルを読みこんで一括変換

ファイルを読み込んで一括変換するようにしました。 ��=入力テキストは以下== 2004/04/251631 22009_01_19_22_34_10.wmv 2004/04/251635 22009_01_19_22_37_42.wmv 2004/04/25163632009_01_19_22_38_35.wmv 2004/04/25163732009_01_19_22_38_57.wmv ��= ��=JAVAの処理== 上記テキストを読み込んで日付部とファイル名部にわけて ファイル名を日付の名前に変更して、更新日時を変更する。 ��=JAVAはここから== /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package filerename; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.Calendar; /** * * @author nao */ public class Main { /** * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here //setup initial variable String folderpath = new String("C:\\Documents and Settings\\nao\\デスクトップ\\test\\"); String inputListFile = new String("test.txt"); //String BR = System.getProperty("line.separator"); /...

Fileクラスのファイル名は上書きできない

プログラムを整理しようと思い、rename候補のファイル名がすでに存在してたら、ファイ名の末尾の数字(つまり分)に1を足して別のファイル名にしてrenameするということをやりました。 ファイルが存在するかしないかをwhileの条件式にいれ、ファイルが存在する場合はFileの名前を上書きしようとしましたが、Javaではそれが許されていない。ファイルクラスのオブジェクトは一旦作成すると変更不可の様子。 困ったので while((new File(folderpath + filename+".wmv")).exists()){ のように作成したファイルクラスのオブジェクト名を特に指定せずに用いるという技で乗り切りました。 また同様にStringクラスも上書きができないのでStringBufferクラスを使用。 あとFileクラスのrenameToメッソッドを使ってファイル名を置き換えてもファイルクラスのgetName()でファイル名を取得しても置き換わらないことがわかりました。(これはなんでか理解できていないが、Javaの試験問題にもでるほど常識な様子) あれやこれやでようやく整理ができました。 次回はリストのファイルを読み込んで一括変換させるようにします。 /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package filerename; import java.io.File; import java.util.Calendar; /** * * @author nao */ public class Main { /** * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here //setup initial variable String folderpath = new String("C:\\Documents and Settings\\nao\\デスクトップ\\test\\"); St...

実際に入力される文字列を整形して日付とファイル名を取得

OCRソフトを通して実際に得られる文字列を 2004/04/25 16 31 2009_01_19_22_34_10.wmv ��日付、分、秒、元のファイル名) というように想定し、この文字列を元に日付を取得し、変換するスクリプトに修正しました。 結局splitコマンドは使わずにIndexから文字列を抽出。 ��参考URL http://ameblo.jp/archive-redo-blog/entry-10034128031.html) また余計な文字列の削除にはreplaceAllを使用しました。 次回はファイルのリストを読み込んで一括処理するようにします。 それともう少し条件分岐のところを綺麗にするか。。。 /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package filerename; import java.io.File; import java.util.Calendar; /** * * @author nao */ public class Main { /** * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here //setup initial variable String folderpath = new String("C:\\Documents and Settings\\nao\\デスクトップ\\"); String inputString = new String("2004/04/251631 2009_01_19_22_34_10.wmv"); //Modify inputString String afterReplace1 = inputString.replaceAll("/", ""); String afterReplace = afterReplace1.replaceAll(" ", ...
今日はファイル名を2009-02-01-15-11.txtとして、ファイル名から日時を取得するようにしました。 ポイントはStringクラスのsplitメソッドを使うこと。 それとStringをInteger.parseIntにより文字列を整数にすることです。 以下、今日の進捗。 順調順調。 /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package filerename; import java.io.File; import java.util.Calendar; /** * * @author nao */ public class Main { /** * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here //変更前ファイル名 File orgFile = new File("C:\\Documents and Settings\\nao\\デスクトップ\\motofile.txt"); boolean ext = orgFile.exists(); if(ext){ System.out.println(orgFile +" exists"); } else{ System.out.println(orgFile +" not exists"); } System.out.println(orgFile + (orgFile.exists()? " is found " : " is missing ")); //変更後のファイル名 String filename = new String("2009-02-01-15-11"); File newFile = new File("C:\\Documents and Settings\\nao\\デスクトップ\\" + filename ...

今日は日付のlong型の設定をCalenderクラスから行うようにしました

setLastModifiedで設定に使えるのはlong型なので、これを2009/01/01/12:00:00:00とかから設定できないかなぁ?としばらくググリながら悩みました。 DateクラスとかstringからDateクラスに変更できないかとか。 でもCalendarクラスだと楽にできることがわかりました。 以下、今日の記述。 次はファイル名から設定する日付を抽出する方法を記述します。 package filerename; import java.io.File; import java.util.Calendar; public class Main { /** * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here //変更前ファイル名 File orgFile = new File("C:\\Documents and Settings\\nao\\デスクトップ\\motofile.txt"); boolean ext = orgFile.exists(); if(ext){ System.out.println(orgFile +" exists"); } else{ System.out.println(orgFile +" not exists"); } System.out.println(orgFile + (orgFile.exists()? " is found " : " is missing ")); //変更後のファイル名 File newFile = new File("C:\\Documents and Settings\\nao\\デスクトップ\\20090201.txt"); if(orgFile.renameTo(newFile)){ //ファイル名変更成功 System.out.println("Rename Successful"); } else{ //ファイル名変更失敗 System.out.pr...

JDKとNetBeansのインストールして記述開始

JAVAのプログラミングを作成するのにはまずJDKと開発環境のNetBeansが必要(Eclipsでも良いが)。 というわけでまずはその二つをググッてインストール。 NetBeansはJava SEとJaveFXに対応したものをインストール。 無事終了したら FileChangeというプロジェクトを作成。 ファイル名の変更の仕方をググッて コピペ。デスクトップ上に適当なファイル名を作って動作確認。 そして、更新日時の変更をぐぐると setLastMoidifiedという関数があることが発覚! ラッキー!と思って、やってみるとなんと単位がmsec。。。 しかも1970年1月1日0時0分0秒が基準。。。 使えん!!(でもどうも、カレンダー表示してくれる関数もありそうなので 明日以降はそれを探すようにします。) で、今日は以下まで記述して動作確認完了。 なかなかいいペースです。 package filechange; import java.io.File; public class Main { public static void main(String[] args) { //変更前ファイル名 File orgFile = new File("C:\\Documents and Settings\\nao\\デスクトップ\\motofile.txt"); boolean ext = orgFile.exists(); if(ext){ System.out.println(orgFile +" exists"); } else{ System.out.println(orgFile +" not exists"); } System.out.println (orgFile + (orgFile.exists()? " is found " : " is missing ")); //変更後のファイル名 File newFile = new File("C:\\Documents and Settings\\nao\\デスクトップ\\20090201.txt"); if(orgFile.renameTo(newFile)){ //ファイル名変更成功...

読み込んだDVのwmvファイルのファイル名と更新日時の変更

DVをWindowsMovieMakerで読み込んだ後の整理を行うにはやはりプログラムを組むのが良さそう。 というわけで今回は勉強もかねてJAVAを選択! JAVAを使って ��、ファイル名を変更 ��、変更したファイルの更新日時を変更 というのを一括で行ってくれるスクリプトを作成したいと思います。 作成状況は随時メモする予定。