File.MakeDir, OpenOutput. Не создается папка, файл.

terandros

Member
Здравствуйте, помогите.

File.MakeDir(File.DirInternal, "andros")
не создает папки вообще нигде,
OpenOutput (Dir як рядок, FileName як рядок, Append as Boolean)
не создает файл нигде.
И вообще после компиляции кода на гаджет во внутреней памяти
не создается папка для хранения файлов моей программы.
 
Last edited:

drgottjr

Expert
Licensed User
Longtime User
не правда

B4X:
    File.MakeDir(File.DirInternal, "subdir")
    File.OpenOutput(File.Combine(File.DirInternal, "subdir"), "test.txt",True)
    File.WriteBytes(File.Combine(File.DirInternal, "subdir"), "test.txt", "Привет, из подкаталога".getbytes("UTF8"))
    
    Log(File.ReadString(File.Combine(File.DirInternal, "subdir"), "test.txt"))
 

Attachments

  • capture.png
    capture.png
    20.3 KB · Views: 128

terandros

Member
не правда

B4X:
    File.MakeDir(File.DirInternal, "subdir")
    File.OpenOutput(File.Combine(File.DirInternal, "subdir"), "test.txt",True)
    File.WriteBytes(File.Combine(File.DirInternal, "subdir"), "test.txt", "Привет, из подкаталога".getbytes("UTF8"))
  
    Log(File.ReadString(File.Combine(File.DirInternal, "subdir"), "test.txt"))
Здравствуйте.
Спасибо за помощь, но ничего не происходит, программа вешается на гаджет нормально
только не прописывается сама в гаджете, а через b4aexample. Поиск файла "test.txt" и папки "subdir"
на гаджете ничего не дал.
И вообще интересно как то даже, сам файл уже самой проги (apk) всеравно не устанавливается
на гаджет, а все через b4aexample.
Не заню, что делать.
 

klaus

Expert
Licensed User
Longtime User
Try the following:
- Change the #ApplicationLabel, on top of the code, from B4A Example to something else: MyProgram.

B4X:
#Region  Project Attributes
    #ApplicationLabel: MyPorgram

- And change the Package from b4a.Example to b4a.MyProgram.
In Project select Build Configurations:

1639295441771.png


And change the Package:

1639295492553.png

Whenever you have a program with B4A Example, a new one or one from the forum, you should always change these two parameters.
 

terandros

Member
Try the following:
- Change the #ApplicationLabel, on top of the code, from B4A Example to something else: MyProgram.

B4X:
#Region  Project Attributes
    #ApplicationLabel: MyPorgram

- And change the Package from b4a.Example to b4a.MyProgram.
In Project select Build Configurations:

View attachment 122913

And change the Package:

View attachment 122914
Whenever you have a program with B4A Example, a new one or one from the forum, you should always change these two parameters.
Thank you so much.
Still does not work.
I see only a folder :
anywheresoftware.b4a.b4abridge/files/
and nothing more
 

klaus

Expert
Licensed User
Longtime User
You need to give more information.
How is your device linked to the PC, USB or B4ABridge?
Where do you see the two files temp1.apk and temp11.apk.
You cannot access the Files.DirInternal folder from outsides it is hidden for all applications, only your application has access to it.

Can you test the attached project.
It is a simple project with the code from post #2 and it works on my Samsung Galaxy S10 via USB cable.
 

Attachments

  • TestDirInternal.zip
    9.2 KB · Views: 125

terandros

Member
You need to give more information.
How is your device linked to the PC, USB or B4ABridge?
Where do you see the two files temp1.apk and temp11.apk.
You cannot access the Files.DirInternal folder from outsides it is hidden for all applications, only your application has access to it.

Can you test the attached project.
It is a simple project with the code from post #2 and it works on my Samsung Galaxy S10 via USB cable.

Гаджет подключаю к ПК и через USB, и через WI FI, используя в гаджете B4ABridge.
Единственное, что я вижу во внутреней памяти гаджета это :
android\data\anywheresoftware.b4a.b4abridge/files/temp1.apk.
Папки "subdir" і файл test.txt не вижу в гаджете вообще.
Гаджет Asus zenfone 4 max.
Фото моего пробного кода.
1639511492387.png


1639511576790.png
 

klaus

Expert
Licensed User
Longtime User
As already written in post #7, you cannot see files in File.DirInternal from outsides your app.
I see that you are using the deprecated Legacy Debugger, why ?
You should use the Debugger.
If you want to see the file on the device you could use the code below:

B4X:
Sub Process_Globals
    Private xui As XUI
    Private RP As RuntimePermissions
    Private MyDir As String
End Sub

Sub Activity_Create(FirstTime As Boolean)
    Activity.LoadLayout("Layout")
 
    MyDir = RP.GetSafeDirDefaultExternal("subdir")
    Log(MyDir)
 
    File.OpenOutput(MyDir, "test.txt",True)
    File.WriteBytes(MyDir, "test.txt", "Привет, из подкаталога".getbytes("UTF8"))

    Log(File.ReadString(MyDir, "test.txt"))
End Sub

The folder on my device is:
/storage/emulated/0/Android/data/b4a.TestDirInternal/files/subdir
It my be different on your device.

And, when you are connected to the PC via a USB you can see the file in the file explorer:

1639561316542.png



Maybe, even this will no more work in future versions of Android because Google is more and more restricting memory access from outsides.
Example: File.DirRootExternal does not work anymore in the latest versions of Android.
 
Last edited:

drgottjr

Expert
Licensed User
Longtime User
dir.assets - это папка только для чтения, в которой вы можете
добавлять ресурсы (файлы) как часть вашего приложения, когда вы
создать приложение. они не могут быть изменены на runtim или
быть замеченным с вашего компьютера.

dir.internal - это папка для создания, чтения и
сохранение файлов во время выполнения. эта папка приватная
и не виден с вашего компьютера.

dir.external - это общедоступная папка, которая видна
всем (в том числе с вашего компьютера).
потому что это видно всем, теперь гугл
запрещает хранить там пользовательские файлы.
это важно для вас знать. Есть
исключения, но, в общем, вы должны забыть
о попытке сохранить ваши файлы в dir.external.
(если вы хотите сохранить файл изображения к картинкам
папку, это можно сделать особым образом.)

safedirexternal - это папка, в которой вы можете сохранить
файлы, которые могут быть просмотрены кем угодно (в том числе из
твой компьютер). почему вам нужны ваши файлы
быть видимым миру - это вопрос только тебя
могу ответить. но если вы хотите сэкономить тест
файлы и просматривать их со своего компьютера, вы
сохраните их в безопасном внешнем хранилище. участник @klaus
дал вам примеры того, как создать это
специальную папку и писать в нее.

Надеюсь, Google Translate не заставит вас смеяться. или плакать.
 

terandros

Member
Як уже було написано в дописі №7, ви не можете побачити файли у File.DirInternal поза межами вашої програми.
Я бачу, що ви використовуєте застарілий налагоджувач, чому ?
Ви повинні використовувати Debugger.
Якщо ви хочете побачити файл на пристрої, ви можете використовувати наведений нижче код:

B4X:
Глобальні_підпроцеси
    Приватний Не пощастив як XUI
    Private RP As RuntimePermissions
    Приватний MyDir як рядок
Кінець суб

Sub Activity_Create (Перший раз як логічне значення)
    Activity.LoadLayout("Макет")
 
    MyDir = RP.GetSafeDirDefaultExternal("subdir")
    Журнал (MyDir)
 
    File.OpenOutput(MyDir, "test.txt", True)
    File.WriteBytes(MyDir, "test.txt", "Привет, з підкаталога".getbytes("UTF8"))

    Журнал (File.ReadString(MyDir, "test.txt"))
Кінець суб

Папка на моєму пристрої:
/storage/emulated/0/Android/data/b4a.TestDirInternal/files/subdir
На вашому пристрої все інакше.

А коли ви підключені до ПК через USB, ви можете побачити файл у провіднику файлів:

View attachment 123038


Можливо, навіть це більше не працюватиме в майбутніх версіях Android, оскільки Google все більше й більше обмежує доступ до пам’яті ззовні.
Приклад: File.DirRootExternal більше не працює в останніх версіях Android.
 

terandros

Member
As already written in post #7, you cannot see files in File.DirInternal from outsides your app.
I see that you are using the deprecated Legacy Debugger, why ?
You should use the Debugger.
If you want to see the file on the device you could use the code below:

B4X:
Sub Process_Globals
    Private xui As XUI
    Private RP As RuntimePermissions
    Private MyDir As String
End Sub

Sub Activity_Create(FirstTime As Boolean)
    Activity.LoadLayout("Layout")
 
    MyDir = RP.GetSafeDirDefaultExternal("subdir")
    Log(MyDir)
 
    File.OpenOutput(MyDir, "test.txt",True)
    File.WriteBytes(MyDir, "test.txt", "Привет, из подкаталога".getbytes("UTF8"))

    Log(File.ReadString(MyDir, "test.txt"))
End Sub

The folder on my device is:
/storage/emulated/0/Android/data/b4a.TestDirInternal/files/subdir
It my be different on your device.

And, when you are connected to the PC via a USB you can see the file in the file explorer:

View attachment 123038


Maybe, even this will no more work in future versions of Android because Google is more and more restricting memory access from outsides.
Example: File.DirRootExternal does not work anymore in the latest versions of Android.
Thank you very much, everything works.
 

terandros

Member
dir.assets - это папка только для чтения, в которой вы можете
добавлять ресурсы (файлы) как часть вашего приложения, когда вы
создать приложение. они не могут быть изменены на runtim или
быть замеченным с вашего компьютера.

dir.internal - это папка для создания, чтения и
сохранение файлов во время выполнения. эта папка приватная
и не виден с вашего компьютера.

dir.external - это общедоступная папка, которая видна
всем (в том числе с вашего компьютера).
потому что это видно всем, теперь гугл
запрещает хранить там пользовательские файлы.
это важно для вас знать. Есть
исключения, но, в общем, вы должны забыть
о попытке сохранить ваши файлы в dir.external.
(если вы хотите сохранить файл изображения к картинкам
папку, это можно сделать особым образом.)

safedirexternal - это папка, в которой вы можете сохранить
файлы, которые могут быть просмотрены кем угодно (в том числе из
твой компьютер). почему вам нужны ваши файлы
быть видимым миру - это вопрос только тебя
могу ответить. но если вы хотите сэкономить тест
файлы и просматривать их со своего компьютера, вы
сохраните их в безопасном внешнем хранилище. участник @klaus
дал вам примеры того, как создать это
специальную папку и писать в нее.

Надеюсь, Google Translate не заставит вас смеяться. или плакать.
Thank you very much, be sure to analyze and take into account Your information.
 
Top