Top > OOobbs2 > 159

** [[OOobbs2/159]] [#b08dc31a]
-''サマリ'': テキストふぁいるの読み込み
-''環境'': Writer
-''状態'': 未解決
-''状態'': 解決
-''投稿者'': [[ゼットン]]
-''投稿日'': 2008-11-19 (Wed) 17:32:05

*** 質問 [#ib33315f]
テキストファイルに、ファイルのフルパスが1行だけ書かれています。
(c:\data\test001.jpg)
このファイル読み込んで
 ConvertToUrlを使用して
file:///c:/data/test001.jpg
に変換したいのですが
file:///c:/data/test001.jpg%0A
となってしまいます。
どうすれば必要な部分のみ取得できますでしょうか?

以下コードを書きます。
コードはこのサイトを参考にしました。

---ここから----

 Sub SimpleFileAcccess
 Dim oSimpleFileAccess As Object
 Dim oSettings As Object
 Dim oPathSettings As Object
 Dim sURL As String
   oSettings = createUnoService(    "com.sun.star.frame.Settings" )
 
   sURL = "file:///c:/data/test.txt"
 
  oSimpleFileAccess = createUnoService( _
    "com.sun.star.ucb.SimpleFileAccess" )
    
 
  MsgBox oSimpleFileAccess.exists( sURL )
 
 Dim sLine As String, sDataLine As String
 Dim oFileAcc As Object, oInputStream As Object
 Dim vData As Variant
       oFileAcc =   CreateUnoService("com.sun.star.ucb.SimpleFileAccess")
       oInputStream =  CreateUnoService("com.sun.star.io.TextInputStream")
       oInputStream.setEncoding( "SJIS" )
       If oFileAcc.exists(sUrl) Then
          vData = oFileAcc.openFileRead(sUrl)
          oInputStream.setInputStream(vData)
          While NOT oInputStream.isEOF()
            sLine = oInputStream.readLine()
            sDataLine = sDataLine & sLine & Chr(10)
          WEnd
          oInputStream.closeInput()
          FileLoader = sDataLine
       End if
  
 
   oDoc = ThisComponent
   oText = oDoc.getText()
   oViewCursor = oDoc.getCurrentController().getViewCursor()
   
  
 Dim sDataLine2 As String
 Dim sDataLine3 As String
    sDataLine2 = sDataLine 
 
    sDataLine3 = ConvertToUrl(sDataLine2)
    MsgBox  (sDataLine2)      
 
    MsgBox  (sDataLine3) 
 
 sDataLine2は
 「c:\data\test.jpg」
と表示されます。     
 sDataLine3は
 「file:///c:/data/test001.jpg%0A」
と表示されます。


*** 回答 [#d403eb5d]
- %0A は文字コードでいうと LF に相当します。ファイルから読み出したときに、

 sDataLine = sDataLine & sLine & Chr(10)

としている部分で LF を追加しているために ConvertToURL で変換すると LF が付いて来ています。

XTextInputStream インターフェースの readLine メソッドは改行コードの CR、LF は取り除いて一行または EOF まで読み込みます。一行しか書かれていないのが前提であれば上記のコードの & Chr(10) を取り除くと良いと思います。

複数行で各行ごとに読み込むのであれば行ごとに配列に格納するのがいいんじゃないでしょうか・・・。

-- はにゃ? &new{2008-11-19 (水) 18:25:41};
- ありがとうございます。解決しました。一行しかないtxtなので取り除くだけにしました。 -- ゼットン &new{2008-11-19 (Wed) 18:48:31};

#comment
*** 感想,コメント,メモ [#u4734020]

#comment

Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup   Help   RSS of recent changes